I want to save the date of today in a string and have the following code with the following output:
Code:
#include <stdio.h>
#include <time.h>
int main()
{
time_t t = time(NULL);
struct tm tm = *localtime(&t);
printf("d-d", tm.tm_mday, tm.tm_mon 1);
printf("\n");
}
Output (for today, November the 5th):
05-11
What is the easiest way to save 05-11 in a string?
CodePudding user response:
You can use the standard strftime function (declared in "time.h"), which takes a variety of format specifiers (akin to those used in printf) to extract and format the various date and/or time fields of a struct tm.
In your case, you would use the %d and %m specifiers to get the (two-digit) day and month numbers:
#include <stdio.h>
#include <time.h>
int main()
{
char StrDate[8];
time_t t = time(NULL);
strftime(StrDate, sizeof(StrDate), "%d-%m", localtime(&t));
printf("%s\n", StrDate);
return 0;
}
You could even add the newline character to the StrDate buffer directly, by appending the %n format specifier.
CodePudding user response:
I used sprintf() which worked fine for me
#include <stdio.h>
#include <time.h>
int main()
{
time_t t = time(NULL);
struct tm tm = *localtime(&t);
char str[80];
sprintf(str, "d-d", tm.tm_mday, tm.tm_mon 1);
printf("%s", str);
printf("\n");
}
