如何在C中的for循环中休息计时器?

问题描述 投票:0回答:1

我有一个代码,可以使两个 LED 闪烁(数)秒,然后保持空闲(数)秒。 Number 和 Number 均由用户输入。代码在第一个循环中运行良好,但它不会切换回开头..

``
```
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <unistd.h>



int main ()
{
time_t start_time = time(NULL); 
adera_rest:
for (;;)
{
    time_t now = time(NULL); 
    time_t diff = now - start_time; 
    if((diff) <= number)              
    {
        adera1_first_led(2);
        adera1_second_led(2);
    }

    if((diff) >=number && (diff)<= number+mumber)
 
    {
     adera1_two_led_off(2);

    }
    else
    {
    printf("why for loop does not go to the beginning\n");
    //goto adera_rest;
    }

}
        return 0;
}
````

我尝试过 else gotto 尝试强制 for 循环转到开头,但没有成功。

c for-loop if-statement goto
1个回答
0
投票

这看起来很像 C 语言的入门练习, 这是一些可能会回答这个问题的代码:

(我会让你实现

get_time()
函数,因为它超出了你的问题范围)

(您的错误来自于对

time()
功能缺乏了解,我会让您阅读适合您个人文化的详细信息:
man 2 time

我不知道

adera1...()
函数的实现细节,所以我将创建虚构的函数,仅用于打开或关闭LED。

#include <unistd.h>

int get_time(void);
void witch_on(int id_led);
void witch_off(int id_led);

int main(void) {
    int t1 = get_time_1();
    int t2 = get_time_2();

    while (1) {
        witch_on(0);
        witch_on(1);
        sleep(t1);
        witch_off(0);
        witch_off(1);
        sleep(t2);
    }
    return (0);
}
© www.soinside.com 2019 - 2024. All rights reserved.