2

誰かがcでカウントを遅らせるかバックカウントする方法を教えてもらえますか?私は1秒後に1と2を書くことを意味します。私が知っている唯一の方法は

include<windows.h>

Sleep( 1000 /* milliseconds */ );

誰かがこれを行う別の方法を教えてもらえますか?(私はウィンドウズ8を持っています)

4

4 に答える 4

2

Standard C89 に限定されている場合

#include <stdio.h>
#include <time.h>

int main(void) {
    time_t t;

    /* wait until the Standard clock ticks */
    t = time(0);
    while (time(0) == t) /* void */;

    /* print 1 */
    puts("1");

    /* wait until the Standard clock ticks again */
    t = time(0);
    while (time(0) == t) /* void */;

    /* print 2 */
    puts("2");

    return 0;
}

POSIX を使用できる場合: nanosleep()を使用します。

于 2013-03-03T18:20:24.750 に答える
2

thrd_sleepC11 で利用可能な を使用して、その単純なラッパーを作成できます。

void sleep(time_t seconds){
    struct timespec ts, remaining;
    timespec_get(&ts, TIME_UTC);
    ts.tv_sec += seconds;
    while(thrd_sleep(&ts,&remaining) == -1){
        timespec_get(&ts, TIME_UTC);
        ts.tv_sec += remaining.tv_sec;
    }
}
于 2013-03-03T18:28:21.093 に答える
1

を使用して 1 秒後に起動するようにアラームを設定してalarm()から、 を呼び出しますpause()

于 2013-03-03T18:27:32.777 に答える
0

の使用はselect()別の移植可能なソリューションですが、(単に) 遅延を生成するための非常に型にはまらないアプローチです。

于 2013-03-03T18:36:22.280 に答える