我正在制作一个程序,我从中获取串行设备的数据。我面临的问题是设备在我运行(1)之前给出了错误的数据,然后读取数据。所以我想运行一个for循环100000次然后读取数据,但它仍然提供了错误的数据。我只能使用while(1)。那么无论如何我可以在(1)之后停止,比如7-10秒。 请帮助,谢谢。!!
答案 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)
,那么你可以像if
和break
一样使用这个想法:
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()那么可能会使用一些循环来获得大量的时间延迟,然后打破循环。