October 11th, 2002, 12:29 AM
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?
October 11th, 2002, 02:26 AM
Assuming you have the variable in a char array, you can always offset or increment a char pointer by 2 positions something like this:
Hope this helps :)
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 */
October 11th, 2002, 09:00 PM
well if its not in a character array, you could always just mod the number by 1000 :)
October 13th, 2002, 11:39 PM
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,
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.
strncpy(two, four, 2)
October 14th, 2002, 12:06 AM
October 14th, 2002, 12:49 PM
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.
October 14th, 2002, 02:20 PM
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:
Hope this helps.
main (int argc, char **argv)
year = 1900 + rand() % 200;
/* convert integer to string */
snprintf(s, sizeof(s), "%4d", year);
/* skip past the first two digits */
printf("%s\n", s + 2);
"A poor programmer is he who blames his tools."
October 14th, 2002, 02:47 PM
It's an int, so that's just a question of output formatting.
printf( "%d02", year % 100 );
October 14th, 2002, 04:33 PM
if(( year % 100) < 10) cout << "0" << year % 100;