如何在 C 中的某个时间后退出 while(1) 循环?

How to exit while(1) loop after sometime in C?

我正在制作一个程序,我在其中从串行设备获取数据。我面临的问题是设备给了我错误的数据,直到我 运行 while(1) 然后读取数据。所以我想到 运行 将 for 循环循环 100000 次,然后读取数据,但它仍然给出了错误的数据。我只能使用 while(1)。那么无论如何我可以在 7-10 秒后停止 while(1) 吗? 请帮忙,谢谢。!!

我觉得会有帮助。

int i=0;
while(1){
   // do your work.
   if ( i == 100 ) break; // for an example.
   i++;
}
printf("After While\n");
while(1) {
   delay(10000); //To delay for 10 seconds.
   break;
}

如果你不能使用 delay() 那么可能使用一些循环来获得大量的时间延迟然后打破循环。

要退出循环,您必须使用 break 语句。

while(1)  
{
    //your code...
    sleep(7);//to sleep for 7 seconds
    break;//jumps out of the loop after 7 seconds of delay
}

您的 while 循环是否有必要在 1 上迭代?也许你可以循环 time(NULL) 代替,例如:

time_t t = time(NULL) + 10;
while (time(NULL) < t) {
    /* ... */
}

这并不准确;循环可以 运行 持续 9 秒到 10 秒之间的任何时间,甚至可能更长,具体取决于其他任务对 CPU 使用的饱和程度。然而,您似乎并没有在寻找任何精确的东西,这应该会给您一些想法...

如果出于某种愚蠢的原因必须使用 while (1),那么您可以将此想法与 ifbreak 一起使用,如下所示:

time_t t = time(NULL) + 10;
while (1) {
    if (time(NULL) >= t) {
        break;
    }
    /* ... */
}
#include <time.h>
#include <stdio.h>

int main()
{
    time_t end  = time(NULL) + 7; //7s

    while (1) {

        //your code...
        printf("running...\n");

        if (time(NULL) >= end) {
            break;
        }

        //your code..
    }
    return 0;
}