アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (4件)

sleepというのがあります。


POSIXの標準的な関数で1秒単位で停止できます。
http://www.linux.or.jp/JM/html/LDP_man-pages/man …

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

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



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

じゃない?
他にも方法は有ると思うけど判りやすいのは時間を持ってくる事かな。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/20 10:22

使っているOSとAPIによるのですが、


たとえばWindows/Win32-APIであれば、
Sleep(n); でnミリ秒間停止します。
    • good
    • 0

> For文を書いて



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

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

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

のようにです。
time関数やclock関数は常に-1を返す実装もありえますので。
    • good
    • 0
この回答へのお礼

 皆さん回答ありがとうございます。
 下のようなコードをかいて時間をスリープさせてやりましたが、何故か
単に表示が遅くなるだけで、実際に*が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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!