Jamadagni
2006-01-09 05:05:41 UTC
Hello - I'm just learning C++. I know the bare basics of C, but
pointers still have me muddled.
Basically what I want to do now is get the current year, month, day,
hour, minute and second. I know I should use first time() and then pass
the result to localtime after which I can extract the desired values
from the members of the tm struct. But the pointers involved in between
have me muddled. The following are the declarations of the time() and
localtime() functions:
time_t time(time_t *tp);
struct tm *localtime(const time_t *tp);
Now I am confused - If I get it correctly, time(time_t *tp) means that
the function time gets some argument, which is equated to time_t *tp.
That means (to my foggy brain) that tp is a pointer to a value of type
time_t. The documentation says that the current calendar time is
returned, and if tp is not NULL then the current calendar time is also
assigned to *tp.
But I do not understand what struct tm *localtime means. Does it mean
that localtime returns a pointer? And localtime(const time_t *tp) means
that I have to give it a value or pointer (using &) as input? Please
explain.
Turning to the practical details, I have successfully implemented:
time_t now;
now = time(NULL);
printf("%d\n",now);
whereby I get results like 1136698157 etc. Now I would like to know
what this number means.
Also, I face problems when I try to convert the time_t value to a
struct tm variable using localtime. If I simply do a
struct tm nowtm;
nowtm = localtime(now);
I get a warning and error for this:
time.c:12: warning: passing argument 1 of 'localtime' makes pointer
from integer without a cast
time.c:12: error: incompatible types in assignment
So please tell me what I should do. Thanks for your patience and time.
pointers still have me muddled.
Basically what I want to do now is get the current year, month, day,
hour, minute and second. I know I should use first time() and then pass
the result to localtime after which I can extract the desired values
from the members of the tm struct. But the pointers involved in between
have me muddled. The following are the declarations of the time() and
localtime() functions:
time_t time(time_t *tp);
struct tm *localtime(const time_t *tp);
Now I am confused - If I get it correctly, time(time_t *tp) means that
the function time gets some argument, which is equated to time_t *tp.
That means (to my foggy brain) that tp is a pointer to a value of type
time_t. The documentation says that the current calendar time is
returned, and if tp is not NULL then the current calendar time is also
assigned to *tp.
But I do not understand what struct tm *localtime means. Does it mean
that localtime returns a pointer? And localtime(const time_t *tp) means
that I have to give it a value or pointer (using &) as input? Please
explain.
Turning to the practical details, I have successfully implemented:
time_t now;
now = time(NULL);
printf("%d\n",now);
whereby I get results like 1136698157 etc. Now I would like to know
what this number means.
Also, I face problems when I try to convert the time_t value to a
struct tm variable using localtime. If I simply do a
struct tm nowtm;
nowtm = localtime(now);
I get a warning and error for this:
time.c:12: warning: passing argument 1 of 'localtime' makes pointer
from integer without a cast
time.c:12: error: incompatible types in assignment
So please tell me what I should do. Thanks for your patience and time.