localtime question
Giorgos Keramidas
keramida at ceid.upatras.gr
Wed Aug 11 02:42:55 PDT 2004
On 2004-08-11 10:44, Mipam <mipam at ibb.net> wrote:
> > You'd have to use strftime() and a local buffer for that.
>
> I found an example and adjusted it:
>
> #include <time.h>
> #include <stdio.h>
>
> int main()
> {
> struct tm *ptr;
> time_t tm;
> char str[60];
> char str2[60];
> char str3[60];
>
> tm = time(NULL)-86400;
> ptr = localtime(&tm);
> strftime(str ,100 , "%d",ptr);
> strftime(str2 ,100 , "%m",ptr);
> strftime(str3 ,100 , "%Y",ptr);
> printf("%s %s %s\n",str3,str2,str);
>
> return 0;
> }
>
> This runs just fine: 2004 08 10
> I dont know what the 100 is good for?
It's the size of the buffer that strftime() gets as the first argument.
In this case 100 is a bug waiting to happen, because the buffers are
allocated with only 60 bytes of data. The manpage of strftime()
explains what each argument is supposed to be.
$ man strftime
> I compiled both with: cc -O3 -mcpu=pentiumpro -o time time.c
> Both compile without errors.
Note that -O3 might be a it unsafe on FreeBSD.
Even -O2 is not always a good idea.
More information about the freebsd-questions
mailing list