关于#c++#的问题:貌似是goto语法错了

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;
}

img


就是隔一秒输出一次内个时间