The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.
|
 |
|
Dev Shed Forums
> Programming Languages
> C Programming
|
Splitting a Variable
Discuss Splitting a Variable in the C Programming forum on Dev Shed. Splitting a Variable C programming forum discussing all C derivatives, including C#, C++, Object-C, and even plain old vanilla C. These languages are low level languages, and used on projects such as device drivers, compilers, and even whole computer operating systems.
|
|
 |
|
|
|
|

Dev Shed Forums Sponsor:
|
|
|

October 10th, 2002, 11:29 PM
|
|
Registered User
|
|
Join Date: May 2002
Location: Chicago, IL
Posts: 5
Time spent in forums: 10 m 49 sec
Reputation Power: 0
|
|
|
Splitting a Variable
I know this is going to end up turning into something really simple but...
I have a variable with the year 2002. I need to print it as both 2002 and 02. How can I only print the last two digits of a variable?
Thank you
Jake
|

October 11th, 2002, 01:26 AM
|
 |
Banned ;)
|
|
Join Date: Nov 2001
Location: Woodland Hills, Los Angeles County, California, USA
|
|
Assuming you have the variable in a char array, you can always offset or increment a char pointer by 2 positions something like this:
Code:
char *date = "2002";
printf("Long date is %s\n", date); /* Prints 2002 */
/* Offsetting the pointer by 2 positions. *date still points to 2002 */
printf("Last two digits are %s\n", date+2); /* Prints 02. */
/* Increment char pointer by 2 characters */
date += 2; /* Now *date points to "02" */
printf("Last two digits are %s\n", date); /* Prints 02 */
Hope this helps 
|

October 11th, 2002, 08:00 PM
|
 |
Shes dancing (obviously)
|
|
Join Date: Jul 2002
Location: the far side
Posts: 527
  
Time spent in forums: 2 h 38 m 39 sec
Reputation Power: 12
|
|
well if its not in a character array, you could always just mod the number by 1000 
|

October 13th, 2002, 10:39 PM
|
|
Registered User
|
|
Join Date: May 2002
Location: Chicago, IL
Posts: 5
Time spent in forums: 10 m 49 sec
Reputation Power: 0
|
|
The whole Modulus thing doesn't work if 1999 is put in, you get 999. If you put in 2002 you get 2. How would I offset in C++. I tried strncpy but I got an error. I was trying to do like,
Code:
strncpy(two, four, 2)
thats not the same one, there was a different one where before the amount of characters you could specify on which character to start coping on.
|

October 13th, 2002, 11:06 PM
|
 |
Shes dancing (obviously)
|
|
Join Date: Jul 2002
Location: the far side
Posts: 527
  
Time spent in forums: 2 h 38 m 39 sec
Reputation Power: 12
|
|
|
mod 100
|

October 14th, 2002, 11:49 AM
|
|
Registered User
|
|
Join Date: May 2002
Location: Chicago, IL
Posts: 5
Time spent in forums: 10 m 49 sec
Reputation Power: 0
|
|
|
I'm thinking the Mod method would be too big of a pain. 100 works but. If the year is 200X you get one number, not the two.
I tried incrementing a char pointer, and well, I got 52 and 51 for 2005 and 1999.
Thanks guys.
|

October 14th, 2002, 01:20 PM
|
 |
*bounce*
|
|
Join Date: Jan 2002
Location: Delft, The Netherlands
|
|
Quote: | I tried incrementing a char pointer, and well, I got 52 and 51 for 2005 and 1999. |
That's odd. Are you sure you're increasing the pointer, and not something else?
Anyway, here's an example program that generates a random year between 1900 and 2100, and prints it out both long and short:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int
main (int argc, char **argv)
{
int year;
char s[5];
srand(time(NULL));
year = 1900 + rand() % 200;
/* convert integer to string */
snprintf(s, sizeof(s), "%4d", year);
printf("%s\n", s);
/* skip past the first two digits */
printf("%s\n", s + 2);
}
Hope this helps.
__________________
"A poor programmer is he who blames his tools."
http://analyser.oli.tudelft.nl/
|

October 14th, 2002, 01:47 PM
|
|
Not there when you need me
|
|
Join Date: Oct 2001
Location: Berlin, Germany
Posts: 1,430
Time spent in forums: 17 m 46 sec
Reputation Power: 13
|
|
Quote: Originally posted by jakobie
100 works but. If the year is 200X you get one number, not the two. |
It's an int, so that's just a question of output formatting.
Code:
printf( "%d02", year % 100 );
HTH
|

October 14th, 2002, 03:33 PM
|
 |
Shes dancing (obviously)
|
|
Join Date: Jul 2002
Location: the far side
Posts: 527
  
Time spent in forums: 2 h 38 m 39 sec
Reputation Power: 12
|
|
|
if(( year % 100) < 10) cout << "0" << year % 100;
|
Developer Shed Advertisers and Affiliates
| Thread Tools |
Search this Thread |
|
|
|
| Display Modes |
Rate This Thread |
Linear Mode
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|