在C中连续切换每秒的布尔值

时间:2014-12-09 23:56:18

标签: c

如何在结构中连续切换布尔值?

我的结构

struct inputval
{
   int a;
   BOOLEAN b;

}

我需要结构中的布尔值b来切换到每秒的真值。

Ex:
t = 1 , b = true
t = 1.5 b = false
t = 2 , b = true

提前致谢

1 个答案:

答案 0 :(得分:1)

正如在评论中已经确定这是关于linux的,这里有一个片段可以做你想要的:

int b = FALSE;
while (1) { // loop forever
    b = !b;
    sleep(1);  // wait for 1 second
}

问题在于这段代码是顺序的:在循环运行时你不能用b做任何事情,没有必要这样做。

第一个解决方案是使您的代码并行。这样做并不容易(至少不可靠),所以让我们找到一个更好的解决方案:UNIX时间戳。

UNIX时间戳表示从1970年1月1日起经过的秒数(不用担心该日期,它有一些历史意义)。 time.h中有一个名为time的函数可用于获取UNIX时间戳。您可以检查此值的奇偶校验,而不是每秒都有一个真或假的变量。

因此,上面的代码相当于:

while (1)
    b = time(NULL) % 2;

不同之处在于,在这种情况下,您不需要保持循环运行。您只需在程序中的任何一点获得b的值。