我有一个自动每秒运行的功能, 在功能里面,我有一个柜台"我"每1秒增加1。我不希望每秒运行一次,但是每隔x秒运行一次,例如每10秒钟一次。
所以我认为最好的方法是检测i的增量,当它增加13? 还是要为函数调用定时器/睡眠函数?
问题:我如何检测增量,即如何检查是否" i"上升了13?
void func(void){
static int i = 0;
if (every i seconds)
{
do something
}
i++;
}
感谢您的任何帮助
答案 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
}
}