gpt4 book ai didi

任务调度的C++代码

转载 作者:行者123 更新时间:2023-11-30 19:53:44 28 4
gpt4 key购买 nike

这段代码没有错误,但当我执行它时,没有输出,程序自动关闭,说程序已停止工作。

#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
char *timetoken;
char currtime[7];
char schedtime[7];
int i;
struct tm *localtimeptr;
strcpy(schedtime,"15:25:00");
while(6!=9)
{
time_t lt;
sleep(1);
lt = time(NULL);
localtimeptr = localtime(lt);
timetoken=strtok(asctime(localtimeptr)," ");
for(i=1;i<5;i++)
timetoken=strtok('\0'," ");
if(i==3)
{
strcpy(currtime,timetoken);
}
}
printf("The current time is: %s\n",currtime);
printf("We are waiting for: %s\n",schedtime);
if(!strcmp(currtime,schedtime))
{
printf("Time to do stuff \n");
system("C:\PROJECT X");
}
getch();
return 0;
}

最佳答案

我不确定你想做什么,但这很可疑:

while(6!=9)
{
/* ... */
}
/* ... more code ... */

6 永远不等于 9,所以这是一个无限循环。无法跳出循环,因此“更多代码”部分中的任何内容都不会执行。这意味着您的 printf 不会执行,您的 system 调用也不会执行。您需要某种方法来摆脱这个循环。

为了使代码更易于阅读(这应该始终是重中之重!),我建议只写

while (true) {
...
}

为了更清楚地表明循环应该一直运行,直到您明确中断为止。

另一个注意事项:此代码

system("C:\PROJECT X");

不正确,因为 C++ 会将 \P 解释为转义字符。要解决此问题,请转义斜杠:

system("C:\\PROJECT X");

对于另一个错误,请仔细查看此循环:

   for(i=1;i<5;i++)
timetoken=strtok('\0'," ");
if(i==3)
{
strcpy(currtime,timetoken);
}

C++ 将此解释为

   for(i=1;i<5;i++) {
timetoken=strtok('\0'," ");
}

if(i==3)
{
strcpy(currtime,timetoken);
}

从这里可以清楚地看出,这是行不通的,因为 if 语句位于循环之外。因此,i 永远不会是 3。您的意思可能是

   for(i=1;i<5;i++) {
timetoken=strtok('\0'," ");
if(i==3)
{
strcpy(currtime,timetoken);
}
}

努力清理代码格式(缩进、空格等)将有助于防止此类错误。如果您已将 i 声明为 for 循环的本地变量,那么您可能会更早地发现这一点。例如,此代码无法编译:

   for(int i = 1; i < 5; i++) {
timetoken=strtok('\0'," ");
}

if(i==3) // i is not in scope
{
strcpy(currtime,timetoken);
}

作为一般规则,推迟声明变量,直到绝对需要它们为止。它使代码更易于阅读(使用的变量往往接近使用它们的代码)并且更少的错误(如上所示)。

希望这可以帮助您入门!

关于任务调度的C++代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146507/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com