GNU C i printf oraz znacznik czasu
: 04 września 2010, 02:34
Piszę sobie w C pod linuksem (gcc (Debian 4.4.4-9) 4.4.5 20100816 (prerelease)) mały programik i potrzebuję znacznika czasu w postaci [RRRR/mm/dd HH:MM:SS]. Przy pomocy google'a napisałem coś takiego:
potem w kodzie używam go tak:
i zamiast
dostaję
i nie wiem gdzie tkwi błąd.
Kod: Zaznacz cały
char *log_file_timestamp()
{
char outtime[32];
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime (&rawtime);
if (timeinfo == NULL)
{
fprintf(stderr, "%s: localtime(): returned NULL value\n", PACKAGE);
exit(EXIT_FAILURE);
}
//"%a, %d %b %Y %H:%M:%S %z"
if (strftime (outtime, sizeof(outtime), "[%Y/%m/%d %H:%M:%S]", timeinfo) == 0)
{
fprintf(stderr, "%s: strftime(): returned 0\n", PACKAGE);
exit(EXIT_FAILURE);
}
char *out = outtime;
return out;
}
Kod: Zaznacz cały
printf("%s test", log_file_timestamp());
Kod: Zaznacz cały
[2010/09/04 01:40:38] test
Kod: Zaznacz cały
���~� test
i nie wiem gdzie tkwi błąd.