こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

時間を止める関数を知りたい

 今晩は、Cの初心者です宜しくお願いします。
 
 For文を書いて時間的なを動作を遅くするため時間を止める関数は有るのでしょうか。
 

投稿日時 - 2009-10-11 01:51:25

QNo.5357892

すぐに回答ほしいです

質問者が選んだベストアンサー

sleepというのがあります。
POSIXの標準的な関数で1秒単位で停止できます。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/sleep.3.html

Windowsに限った話では
Sleepという関数も使えます。
これはミリ秒単位で指定可能です。
http://msdn.microsoft.com/ja-jp/library/cc429358.aspx
UNIX系では
usleepとかも使えます。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/usleep.3.html

投稿日時 - 2009-10-11 02:12:53

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

> For文を書いて

For文というのが何か不明ということもありますが...

環境不明の状況であれば、空ループ以外の方法はないと思います。
例えば...

volatile unsigned int t;
for (t = 0; t < 10000; t++)
 ;

のようにです。
time関数やclock関数は常に-1を返す実装もありえますので。

投稿日時 - 2009-10-11 09:10:02

お礼

 皆さん回答ありがとうございます。
 下のようなコードをかいて時間をスリープさせてやりましたが、何故か
単に表示が遅くなるだけで、実際に*がRand関数
により発生して、ゆれるような表示ができません.
 どこをどのように修正してやればよいのでしょうか。

宜しくご教示お願い致します。
=============================================================

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

int main()
{
char str[20] ;
int pos = 10 ;
int j ;
srand( time( NULL ) ) ;
do
{
Sleep(500);
for(j = 1 ; j < pos ; j ++ )
{
putchar(' ');
}
putchar('*');
putchar('\n');
switch ( rand() %3 )
{
case 0:
continue ;
break;
case 1:
pos = pos + 1 ;
break;default :
pos = pos - 1 ;
break;
}
} while(pos > 0 && pos < 1000 );
return 0 ;
}

投稿日時 - 2009-10-11 12:56:25

ANo.3

使っているOSとAPIによるのですが、
たとえばWindows/Win32-APIであれば、
Sleep(n); でnミリ秒間停止します。

投稿日時 - 2009-10-11 02:33:16

ANo.2

目的によって止め方が違うね。

通常は「時計」の値を持ってきて一定の値になるまでwhileで待つか
時間発生による「イベント」を受け取るようにしておくか

じゃない?
他にも方法は有ると思うけど判りやすいのは時間を持ってくる事かな。

投稿日時 - 2009-10-11 02:14:16

お礼

皆さん、回答有り難うございました、自分でももっと勉強してみます。

投稿日時 - 2009-10-20 10:22:48

あなたにオススメの質問