No.2ベストアンサー
- 回答日時:
最初は「そんなことないだろう」と思ってたんですが,確かに入力行の途中でCtrl+Dを押したときは,リターンを押したときのようにそこまでの入力内容がフラッシュされるだけで,EOFにはならないですね.
[a],[b],[c],[Ctrl+D]と押した場合
→ abc97 98 99
私も知らなかったんですが,どうも行頭で押さないとCtrl+DはEOFにならないようです.
キーボードバッファリングの仕様がこうなってるからどうしようも無いと諦めるか,あるいはバッファリングをせずに直で1文字ずつ取るか,どっちかですね.
バッファリングをしないでキーボードから直接文字を取るにはcursesライブラリを使うのが簡単だと思います.
#include <stdio.h>
#include <curses.h>
main()
{
int ch ;
initscr();
while ( ( ch = getch() ) != 4 ){
printf("%d ",ch);
refresh();
}
printf("\n");
endwin();
}
4がCtrl+Dを表す文字コードです.initscr, getch, refresh, endwinがcursesのライブラリ関数です.
コンパイルのときはcursesライブラリをリンクするのを忘れないで下さい.gccの場合↓
gcc test.c -o test -lcurses
ありがとうございます!!
Windows環境だとちゃんといくのに、Linuxだと駄目で
非常に悩んでおりました。
cursesライブラリについては全く知らなかったので
色々勉強してみます。
またよろしくお願いします!!!
No.1
- 回答日時:
Ctrl + Dで終了したいのですね。
#include <stdio.h>
main()
{
int ch ;
while ( ( ch = getch() ) != EOF ){
printf("%d\n",ch);
}
}
でいかがでしょうか。
getcharをgetchに変えただけです。
また、putchar('\n');もprintfに組み込んでしまいました。
もしかしたら
#include <conio.h>
を入れないとダメかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
scanf関数について
C言語・C++・C#
-
WindowsでEOF
C言語・C++・C#
-
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
-
4
セグメントエラー
C言語・C++・C#
-
5
nullと"、\\0とEOFの違いについて。
C言語・C++・C#
-
6
fgets関数のEOFの扱い方について
C言語・C++・C#
-
7
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
8
終了条件Ctrl+zについて,結果表示ついて(C言語)
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
strcmp
-
【C言語教えてください】sin波...
-
球の体積と表面積を表示するプ...
-
cshの文字列操作(0埋め)
-
10個出力で改行したいのですが...
-
ifなんですが
-
printf で二進表示を行いたい。
-
関数について
-
円の面積を求めるプログラミン...
-
Visual Sutdio 2017 でのC言語...
-
コマンドプロンプトがすぐ消える
-
C言語の配列問題について
-
c言語 成績表示のプログラムで...
-
(C言語)西暦年月日を入力して...
-
printfの出力内の文字をdefine...
-
コンパイルエラーについて
-
C言語で五目並べを作成している...
-
%P と %X の違い
-
2つ分数の四則演算を行うプロ...
-
hit&bolwのプログラミングがで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
strcmp
-
コンパイルエラーについて
-
c言語でAからZまでを表示する...
-
コマンドラインに出力した文字...
-
cshの文字列操作(0埋め)
-
4の倍数を論理演算で表す。。
-
C言語 プログラミング
-
%P と %X の違い
-
8人分のテストの点数を入力し、...
-
C言語での、年複利の計算方法...
-
printf( " %2d", p * q );
-
hit&bolwのプログラミングがで...
-
scanfに文字が入力されたときに...
-
error C2143: 構文エラー : ';'...
-
printfの出力内の文字をdefine...
-
テキストカーソル位置の取得
-
unsigned int型について
おすすめ情報