質問編集履歴
2
説明箇所がわからないという指摘をもとに、編集しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,6 +21,8 @@
|
|
21
21
|
10文字以下の入力の場合は、そのままプリントされます。
|
22
22
|
10文字以上の入力の場合は、10番目以降の文字を読み捨てられる。
|
23
23
|
|
24
|
+
## なぜソースコードにscanfがあるのか
|
25
|
+
ご指摘いただいた内容です。
|
24
26
|
バッファに残っていないことを確認するために、scanfを置いておき、
|
25
27
|
・何もせずに入力を受け取っていたら、バッファに文字が残っており、
|
26
28
|
・入力待ち状態になったら、バッファに文字が残っていないことがわかるようになっています。
|
1
調査したこと・試したことの記載を行いました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
C言語コードレビュー:バッファに残った文字を読み飛ばす。
|
1
|
+
C言語コードレビュー:バッファに残った文字を読み飛ばす。
|
test
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
## 調査したこと・試したこと
|
2
|
+
fgets, scanf, getcharの三つの入力として使われる関数をもとに、決められた文字数だけをデータとして持ち、それ以上の入力は読み飛ばして、バッファの中身を空にするということを行ってきました。
|
3
|
+
|
4
|
+
じゃあなぜgetcharを投稿したのかというと、今後入力した文字列に条件(半角のみとか)をつける際に、一文字ずつ受け取って、判定して、次の文字を受け取って、判定して、、、、を繰り返した方が、正確に情報を読み取り、バグが少ないと考えたからです。
|
5
|
+
|
6
|
+
ただ自分で解答した通り、scanfで文字数を指定して、入力できることを知り、受け取った後にバッファを読み飛ばせばいいことに気づきました。
|
7
|
+
|
8
|
+
scanfの方法ではfgetsができないことがわかっています。fgetsは\nも読み取ってしまうので、while(getchar()!=''\n);の記述をしてしまうと、while文での入力待ちが発生してしまいます。scanfは\nを読み取らないので、質問解答に記載した方法が最良なのではないかと考えます。
|
9
|
+
|
10
|
+
皆様の意見をお聞かせ下さい。
|
11
|
+
|
1
12
|
## テーマ、知りたいこと
|
2
13
|
記事に載せましたコードのレビューをお願いしたいです。
|
3
14
|
また改善策などありましたら、コメントのほどお願いします。
|