如何在C中退出(1)循环后退出?

时间:2015-04-07 06:39:50

标签: c while-loop

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

5 个答案:

答案 0 :(得分:0)

我认为这会有所帮助。

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

答案 1 :(得分:0)

您的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;
    }
    /* ... */
}

答案 2 :(得分:-1)

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

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

答案 3 :(得分:-1)

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

答案 4 :(得分:-2)

while(1) {
   delay(10000); //To delay for 10 seconds.
   break;
}

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