我必须编写一个在无限循环中调用sleep(60)
的程序。循环中每五次我必须获取当前时间并打印tm_sec字段。
这就是我写的:
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
int main()
{
struct tm t1;
int i=0;
for(;;)
{
sleep(60);
if(i%5==0)
{
gettimeofday(&t1,NULL);
printf("%d\n",t1.tm_sec);
}
i++;
}
}
我收到错误aggregate tm t1 has incomplete type and cannot be defined.
我不知道我做错了什么。
答案 0 :(得分:3)
你想要struct timeval,而不是struct tm。试试这个:
struct timeval t1;
此外,您需要t1.tv_sec
,而不是t1.tm_sec
。
答案 1 :(得分:2)
你错了。选择以下两个中的一个:
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *tz);
或者:
#include <time.h>
char *asctime(const struct tm *tm);
struct tm *gmtime(const time_t *timep);
struct tm *localtime(const time_t *timep);
答案 2 :(得分:1)
gettimeofday
指向timeval
,而不是tm
,指的是自1970年以来的秒(和微秒)时间。
如果您需要tm
,则需要<ctime>
中的函数(例如localtime()
)来转换timeval
的秒字段。