c语言新手,写了个一秒报一次时间的代码
#include<stdio.h>
#include<time.h>
time_t time(time_t *t);
void main()
{
int i=time((time_t*)NULL);
int j,k;
for(j=1;j<1000;j++)
{
while(1)
{
while(time((time_t*)NULL)==i+j)
{
k=time((time_t*)NULL);
printf("%d\n",k);
goto again;
}
}
again:
}
printf("结束");
}
不知道为什么会报错,貌似是goto语法错了,但不知道哪儿错了😭
不要用goto!!!这是个特别烂的习惯!!!
你这逻辑很混乱,错误挺多的,改成这样:
#include<stdio.h>
#include<time.h>
int main()
{
time_t i = time(NULL);
int j;
for (j = 1; j < 1000; j++)
{
while (time(NULL) < i + j)
;
printf("%d\n", j);
}
printf("结束");
return 0;
}
【以下回答由 GPT 生成】
首先,这段代码中的语法错误是使用了过时的main()
函数定义,应该改为使用标准的int main()
函数定义。
另外,代码中的time(time_t *t)
函数应该是库函数,不需要再进行声明,并且time(NULL)
可以直接获取当前的时间。
最后,代码中使用了goto
语句,这在一般的情况下是不推荐使用的,可以使用其他方式来实现相同的功能。
以下是修改后的代码:
#include <stdio.h>
#include <time.h>
int main()
{
time_t i = time(NULL);
int j, k;
for(j = 1; j < 1000; j++)
{
while(1)
{
while(time(NULL) == i + j)
{
k = time(NULL);
printf("%ld\n", k);
break;
}
}
}
printf("结束\n");
return 0;
}
修改后的代码中,使用了int main()
来定义入口函数,time(NULL)
直接获取当前时间,不再需要进行类型转换。
goto
语句改为使用break
来跳出内层循环,达到相同的效果。
最后,在输出结束标记后,添加了return 0;
语句来表示程序正常结束。
【相关推荐】
感谢@[PE]经典八炮
其实我想写的是效果类似这个的😀
#include<stdio.h>
#include<time.h>
int main()
{
time_t i = time(NULL);
int j,k;
for (j = 1; j < 10; j++)
{
while (time(NULL) < i + j)
;k=time(NULL);
printf("%d\n", k);
}
printf("结束");
return 0;
}