|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
Stop making mediocre tutorials.The best tutorials are video! Camtasia Studio makes it easy to create engaging, buzz-building screen videos at any size, in any popular format. Download the free trial!
|
|
#1
|
|||
|
|||
|
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 |
|
#2
|
||||
|
||||
|
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 ![]() |
|
#3
|
||||
|
||||
|
well if its not in a character array, you could always just mod the number by 1000
![]()
__________________
microsofts butterfly is their way off telling u their systems have a **** load of buggs Advocating Linux Guide Lesbian Linux Great & Practical Computer Books like the links? |
|
#4
|
|||
|
|||
|
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. |
|
#5
|
||||
|
||||
|
mod 100
|
|
#6
|
|||
|
|||
|
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. |
|
#7
|
||||
|
||||
|
Quote:
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/ |
|
#8
|
|||
|
|||
|
Quote:
It's an int, so that's just a question of output formatting. Code:
printf( "%d02", year % 100 ); HTH
__________________
PHP manual | MySQL manual | Apache docs | Linux Documentation Project | Free Software Foundation Smart Questions HOWTO | PHP security | PHP FAQ | Posting HOWTO Wikipedia | English dictionary | Google | News | RFCs Thus Spoke Zarathustra | A Skeptic's Guide to Christianity | Project Gutenberg | Skeptic's Annotated Bible ParEcon | Marxists Internet Archive | The Memory Hole | Landover Baptist | DHMO Research Universal Declaration of Human Rights | UN Charter | Geneva Conventions Sinfest | Chopping Block | Filthy Lies | Bob the Angry Flower | How to Shoot Yourself In the Foot |
|
#9
|
||||
|
||||
|
if(( year % 100) < 10) cout << "0" << year % 100;
|
![]() |
| Viewing: Dev Shed Forums > Programming Languages > C Programming > Splitting a Variable |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|