RE:检查C中的每个X增量

时间:2014-10-28 11:17:56

标签: c function time sleep increment

我有一个自动每秒运行的功能, 在功能里面,我有一个柜台"我"每1秒增加1。我不希望每秒运行一次,但是每隔x秒运行一次,例如每10秒钟一次。

所以我认为最好的方法是检测i的增量,当它增加13? 还是要为函数调用定时器/睡眠函数?

问题:我如何检测增量,即如何检查是否" i"上升了13?

void func(void){

    static int i = 0; 
    if (every i seconds)
     {
       do something
     }
    i++;
}

感谢您的任何帮助

5 个答案:

答案 0 :(得分:3)

我认为您正在寻找模运算(http://en.wikipedia.org/wiki/Modulo_operation):

void func(void){
    static int i = 0; 
    int x = 13
    if (i % x == 0)
    {
        do something
    }
    i++;
}

答案 1 :(得分:1)

你的方法是合法的。 回答关于每隔13秒运行一次的问题:

if (i > 0 && (i % 13) == 0) {
    //do something
}

答案 2 :(得分:1)

我不确定我是否完全理解你的问题。

你可以试试这个:

void func(void){

static int i = 0; 
int interval = 13;
if (i % interval == 0)  /* interval can be your every second */
 {
   do something
 }
i++;
}

答案 3 :(得分:0)

如果您不需要每秒运行一次循环,那么更强大的机制就是使用libc中提供的警报功能:http://www.gnu.org/software/libc/manual/html_node/Setting-an-Alarm.html

答案 4 :(得分:0)

也许使用time()函数:

#include <time.h>

const time_t intervalTime = (13);
void func(void)
{

     static time_t savedTime = 0; // results in 'do something' on first execution
     time_t currentTime = time(NULL);

     if ( intervalTime <= (currentTime - savedTime) )
     {
         if( 0 == savedTime )
         { // then first time through function

             savedTime = currentTime;
         }

         savedTime += intervalTime; // this avoids time interval drifting
         do something
     }
}