I am currently working on a c project and I am trying to get the date from the system and build that into a string.
I am very new to c so I'm currently learning as I go along but I cannot get this to work. Below is the code that I have
time_t now = time(NULL);
struct tm *t = localtime(&now);
char currentDate[13];
char day[3];
char month[3];
char year[5];
char hour[3];
char min[3];
sprintf(day, "%02d", t->tm_mday, sizeof(day));
sprintf(month, "%02d", t->tm_mon+1, sizeof(month));
sprintf(year, "%04d", t->tm_year + 1900, sizeof(year));
sprintf(hour, "%02d", t->tm_hour, sizeof(hour));
sprintf(min, "%02d", t->tm_min, sizeof(min));
strcat(currentDate, day);
strcat(currentDate, month);
strcat(currentDate, year);
strcat(currentDate, hour);
strcat(currentDate, min);
printf("Current Date: %s", currentDate);
When it does the printf it just prints a load of rubbish e.g.
Current Date: ÃÃx·Z¤ÿ·øÃéôÃÿ·^XÃé<95>úþ·^F^FÃ^P^_
What am I doing wrong.
I would consider using ctime and/or strftime. It might get you what you want without messing too much with strings and time fields.
With strftime:
char text[100];
time_t now = time(NULL);
struct tm *t = localtime(&now);
strftime(text, sizeof(text)-1, "%d %m %Y %H:%M", t);
printf("Current Date: %s", text);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With