![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
#include <stdio.h>
int main()
{
int c;
while((c=getchar()) != EOF)
printf("'%1c' -- %2x\n", c,c);
return 0;
}
で行頭にCtrl + Z + リターンを入力するとwhile文を抜けられるのですが、
文字入力の途中でCtrl + Z + リターンを入力するとCtrl + Z が0x1aと認識されて
while文を抜けられないようなのですが、上の文を入力がEOFまたは0x1aでwhile文を
抜けられるようにしたいのですが、どのような記述にすれば良いのでしょうか?
No.1ベストアンサー
- 回答日時:
「入力がEOFまたは0x1aでwhile文を抜けられるようにしたい」というだけなら, 素直に while の条件を
(c = getchar()) != EOF && c != 0x1a
とすればいいだけじゃないのかなぁ. 何が疑問なんだろ.
あ, ちなみに「行頭じゃないと C-Z が EOF にならない」というのは仕様らしいね.
No.2
- 回答日時:
> と書いた時の違いってどのようになるのでしょうか?
後者は、ループの先頭でgetchar()します。
前者は、ループに入る前にgetchar()します。
while((c = getchar()) != EOF && c != 0x1a)と同じ機能を前者の方式でやるためには、
c=getchar();
while (c != EOF && c != 0x1a){
printf("'%1c' -- %2x\n", c,c);
c=getchar();
}
と、ループの末尾でもgetchar()する必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# char string[100]; int c, i=0; while( (c=getchar()) 2 2022/05/30 21:41
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループを途中で抜けたいのですが。
-
do-while文が禁止される理由
-
for文while文の無限ループの違...
-
break文でループを一気に抜ける...
-
入力した文字列から母音だけを...
-
UWSCにてある一定の動作を無限...
-
エクセルでC言語のfor文と同じ...
-
プログラムで関数は使わない方...
-
PIC のプログラムについて ど...
-
ループの特定入力終了
-
C言語、whileループを抜け出す...
-
While文の終わりにセミコロンが...
-
Excel VBAで年度をまたぐ期間の...
-
プログレスバーで
-
C言語 数字を削除する関数
-
基本情報技術平成21年春午後問8...
-
Cプログラムが終了しない
-
入力した数値を倍々するプログラム
-
if文を使わずに奇数・偶数を判断
-
H8/3048マイコンAD/DA変換について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
break文でループを一気に抜ける...
-
ループを途中で抜けたいのですが。
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
C言語forループが完結した場合...
-
エクセルVBAで Do While (1)って?
-
入力した文字列から母音だけを...
-
if文の中にfor文なのか、for文...
-
Excel VBAで年度をまたぐ期間の...
-
C言語、whileループを抜け出す...
-
for文while文の無限ループの違...
-
プログラムで関数は使わない方...
-
Cプログラムが終了しない
-
PIC のプログラムについて ど...
-
アルゴリズムです!四つの数字...
-
UWSCにてある一定の動作を無限...
-
繰り返し文の利点について
-
ループの特定入力終了
-
PAD図の書き方
おすすめ情報
c=getchar()
while (c != EOF && c != 0x1a)
と
while((c = getchar()) != EOF && c != 0x1a)
と書いた時の違いってどのようになるのでしょうか?