回答編集履歴
3
誤字の修正
answer
CHANGED
@@ -31,11 +31,11 @@
|
|
31
31
|
int main(void)
|
32
32
|
```
|
33
33
|
**追記2**
|
34
|
-
この scanf("%*[^\n]"); による現在の行の不正文字
|
34
|
+
この scanf("%*[^\n]"); による現在の行の不正文字の読み飛ばしには
|
35
35
|
注意しなければならないことがあります。
|
36
36
|
それは行末の '\n' が入力バッファに残っているということです。
|
37
37
|
|
38
|
-
次の入力が scanf("%d" や scanf("%s などであれば、
|
38
|
+
次の入力処理が scanf("%d" や scanf("%s などであれば、
|
39
39
|
その '\n' を呼び飛ばしてくれるので問題ありません。
|
40
40
|
|
41
41
|
しかし、scanf("%c" や scanf("%[ では、'\n' を読み込んでしまいます。
|
2
コードの注意点を追記
answer
CHANGED
@@ -29,4 +29,14 @@
|
|
29
29
|
}
|
30
30
|
|
31
31
|
int main(void)
|
32
|
-
```
|
32
|
+
```
|
33
|
+
**追記2**
|
34
|
+
この scanf("%*[^\n]"); による現在の行の不正文字は読み飛ばしには
|
35
|
+
注意しなければならないことがあります。
|
36
|
+
それは行末の '\n' が入力バッファに残っているということです。
|
37
|
+
|
38
|
+
次の入力が scanf("%d" や scanf("%s などであれば、
|
39
|
+
その '\n' を呼び飛ばしてくれるので問題ありません。
|
40
|
+
|
41
|
+
しかし、scanf("%c" や scanf("%[ では、'\n' を読み込んでしまいます。
|
42
|
+
また、getchar() や fgets でも '\n' を文字として読み込んでしまいます。
|
1
コードを追加
answer
CHANGED
@@ -13,4 +13,20 @@
|
|
13
13
|
printf("0~2の数字を再度入力して下さい\n");
|
14
14
|
}
|
15
15
|
}
|
16
|
+
```
|
17
|
+
**追記**
|
18
|
+
scanf は、もう一つあったんですね。
|
19
|
+
```diff
|
20
|
+
{
|
21
|
+
int x;
|
22
|
+
printf("もう一度しますか""(0)いいえ (1)はい :");
|
23
|
+
- scanf("%d", &x);
|
24
|
+
-
|
25
|
+
- return x;
|
26
|
+
+ if (scanf("%d", &x) == 1) return x;
|
27
|
+
+ scanf("%*[^\n]"); // 行末まで不正な文字を読み飛ばす
|
28
|
+
+ return 2;
|
29
|
+
}
|
30
|
+
|
31
|
+
int main(void)
|
16
32
|
```
|