
#include <stdio.h>
int main(void)
{
char str[255];
int i, len;
while (1){
printf("文字列を入力してください:");
if (fgets(str, sizeof(str), stdin) == NULL) {
break;
}
len = strlen(str);
if (len > 0 && str[len - 1] == '\n') str[len - 1] = '\0';
if (str[0] == '\0') break;
enterで終了するプログラムの例ですが、
if (fgets(str, sizeof(str), stdin) == NULL)
のNULLはどういった理由で必要ですか?
また、
if (len > 0 && str[len - 1] == '\n') str[len - 1] = '\0';
を消して、
if (str[0] == '\0') break;
を、if (str[0] == '\n') break;
と書き換えれば、終了すのではないですか?不適な理由がありますか?
No.1ベストアンサー
- 回答日時:
>if (fgets(str, sizeof(str), stdin) == NULL)
>のNULLはどういった理由で必要ですか?
入力時に何らかのエラーを起こす場合があります。
例えば、stdin は、他のファイルからの入力にリダイレクトされている場合があります。
その時にファイルが(デバイスの都合で)読めなかったり、ファイルが終端に達していて読込が継続できない場合があります。
(標準入力からCTRL+Zが入力される場合と同じ)
>if (str[0] == '\n') break;
>と書き換えれば、終了すのではないですか?不適な理由がありますか?
特別不適な理由はありません。
そのような仕様であるとすることができると思います。
ただ、場合によっては、\r\nの場合を考える必要がある(予防措置)のだったり、
本処理に入る前に\nの処理をしておきたいというのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
C++で空Enterの入力を判断したい!!
C言語・C++・C#
-
ループを途中で抜けたいのですが。
C言語・C++・C#
-
4
あるキーを押したら強制終了させるには。
C言語・C++・C#
-
5
C言語 空白の行(改行のみ)が入力されたらプログラムを終了する処理
C言語・C++・C#
-
6
バッファとは何ですか
C言語・C++・C#
-
7
空ENTERの判別
C言語・C++・C#
-
8
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
9
C言語---ファイルに出力したデータをすべて消去する方法
C言語・C++・C#
-
10
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
11
ダメだ・・・分からない。while文 無限ループ&’\n’エンター後無限ループ脱出
C言語・C++・C#
-
12
キーボード入力によるループの終了
C言語・C++・C#
-
13
0xffffとは?
C言語・C++・C#
-
14
C言語でgetchar();が上手く使えずに困っています‼ void input(char *cx,
C言語・C++・C#
-
15
Linuxで入力待ちなしkeyread関数のようなものはありますか?
C言語・C++・C#
-
16
char str[256]の256の意味は?
C言語・C++・C#
-
17
空Enterの扱い方
C言語・C++・C#
-
18
fopenで別ディレクトリにファイルをオープンしたい
C言語・C++・C#
-
19
キーボード入力の終了につきまして(ループ処理内)
Java
-
20
C言語 ファイルの指定された行を表示
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
漢字のソートについて
-
5
4桁の数字以外を入力したらエラ...
-
6
【再々投稿】VBAのプログラムで...
-
7
C言語 逆ピラミッドの作り方
-
8
C言語scanf_sで何故か2回入力に...
-
9
コマンドプロンプトからのEOFの...
-
10
意味のよく分らないソース
-
11
Userformの入力順序をタブオー...
-
12
C言語の非標準コンソール関数ge...
-
13
正負を反転させて出力するプロ...
-
14
数値の連続入力終了条件について
-
15
数字以外が入力されたらエラー...
-
16
Eclipseコンソール表示を、リセ...
-
17
c言語のプログラムで行列の積を...
-
18
if文の条件にscanf関数を使うと…?
-
19
cout関数を使っているのですが...
-
20
標準入力の際に、、、fgets
おすすめ情報
公式facebook
公式twitter