c言語で「好きな言葉を入力すると、その言葉を一文字ずつ出力する(文字と文字の間は0.1秒)」というプログラムを作ろうと思い、以下のコードを書いてみました
c
1#include<stdio.h> 2#include<time.h> 3#include<string.h> 4 5int sleep(unsigned long x){ 6 7 clock_t c1=clock(),c2; 8 9 do{ 10 if((c2=clock())==(clock_t)-1) 11 return 0; 12 }while(1000.0*(c2-c1)/CLOCKS_PER_SEC<x); 13 return 1; 14} 15 16 void gput(char *s,int speed){ 17 int c,i; 18 c=strlen(s); 19 for(i=0;i<c;i++){ 20 printf("%c",s[i]); 21 sleep(speed); 22 } 23 24} 25 26int main(void){ 27 28 char str[50]; 29 printf("好きな言葉を入力してください:"); 30 scanf("%s",str); 31 gput(str,100); 32 33 return 0; 34 35} 36
ですが、これを実行すると、言葉を入力した後に、少し間があった後全ての文字が一気に表示されてしまいます
何が問題なのでしょうか?
それと、「関数に配列を渡す」ということが、いまいちわかっていないので私のやり方(関数に配列の最初のポインタを渡す)に問題があれば、そちらもご教授願います
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。