
こんにちはorこんばんは。
学校でC言語を習っています。
質問なんですが以下のプログラムで1行で表示する文字を時間差で表示させたいのですがどうしたらいいんでしょうか?理想としては
「犯人は・・・(数秒後)お前だ!」 ←これを改行せずに1行で。
と表現したいんですが、最初に
int main(void)
{
printf("犯人は・・・");
sleep(2);
printf("お前だ!\n");
return 0;
}
と書いたのですが、思い通りにいかず、数秒たってから一度に表示しました。
C言語を使っている環境はLinux4.2でemacsで書いています。
どなたか方法をご存じの方がいれば教えてください。
お願いします。
No.3ベストアンサー
- 回答日時:
「Linux4.2」ってなんだ. そんなものはないぞ.
さておき, stdin がデフォルトでラインバッファリングになっているんでしょう. つまり「バッファからあふれそうになるか 1行が終わるたびに出力する」という仕様になっている.
だから fflush するか setbuf ないし setvbuf でバッファリングを止めるかすればいいはず.
ちなみにたぶん putchar では効果ないと思う>#2.
回答ありがとうございます。
fflush()関数のおかげで思い通りの結果が出せました。
「Linux4.2」て言うのは「Vine Linux 4.2」ていうつもりで書きました。
間違えてたらすいません。
No.2
- 回答日時:
バッファに文字を蓄えておき、エンターキーに相当する¥nで一度に表示する仕様なのかな。
putchar() を使ってみたらどうですか。
ポインターを使いputchar(*p++) とタイマーの組み合わせで上手く行けば、
「犯人は・・・(数秒後)お前だ!」 全体をゆっくり表示できます。
回答ありがとうございます。
自分の勉強不足でポインタのイメージがつかめず上手くできませんでした。
今後のC言語勉強に役立てたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sscanfとscanfの違いがよくわか...
-
fgetsとsscanfを使って一行から...
-
if文の判定条件('||'と'&&'の使...
-
最早開始時間と最遅完了時刻を...
-
C言語 エラーの原因がわからな...
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
For文の終了値を関数にしても問...
-
配列をnビットシフトする
-
数学 一次関数 関数 y=-3/4x+k(...
-
std::set<int> で、ある値が何...
-
Enterキーを押されたら次の処理...
-
main.c:7:43: warning: implici...
-
#define _CRT_SECURE_NO_WARNIN...
-
InvokeMemberメソッドとは何を...
-
【#define】 defineで定義した...
-
2の補数を計算するプログラム
-
a^2の√=a が成り立たない場合
-
2÷3などの余りについて
-
PICで小数点の演算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
sscanfとscanfの違いがよくわか...
-
fgetsで拾われる改行文字を削除...
-
fgets関数を使用したときの文字...
-
Cで「大文字、小文字の判定」は...
-
反転した数値を表示させるやり方
-
C言語 空白の行(改行のみ)が...
-
itoaわかりません
-
C言語のステップ数をカウントす...
-
charと%c , %s の関係について
-
文字列の途中に「0」がある場...
-
C言語の勉強しています。すみま...
-
putsとputcharの違い?
-
fgetsとsscanfを使って一行から...
-
単語数のカウントについて
-
C/C++言語で日本語処理
-
CStringについて
-
C言語で16進数文字列から16進数...
-
printfの引数指定でなぜ文字列...
-
C言語(ポインタ)について
おすすめ情報