回答編集履歴
4
書式修正
answer
CHANGED
@@ -1,7 +1,19 @@
|
|
1
1
|
`c`には`1`の後のENTER(`\n`)が格納され、
|
2
2
|
`num`は`A`が数値でないため読み取られず不定値となっています。
|
3
3
|
|
4
|
+
```diff
|
4
|
-
|
5
|
+
-scanf("%d", &n);
|
5
|
-
|
6
|
+
+scanf("%d%*c", &n)
|
6
7
|
|
8
|
+
-scanf("%c %d", &c, &num);
|
9
|
+
+scanf("%c %d%*c", &c, &num);
|
10
|
+
```
|
11
|
+
とすることで`\n`を読み捨てるか、
|
12
|
+
|
13
|
+
```diff
|
14
|
+
-scanf("%c %d", &c, &num);
|
15
|
+
+scanf(" %c %d", &c, &num);
|
16
|
+
```
|
17
|
+
としてみてください。
|
18
|
+
|
7
19
|
後者なら`1 A 1<ENTER>`と入力された場合でも動作します。
|
3
コード修正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
`c`には`1`の後のENTER(`\n`)が格納され、
|
2
2
|
`num`は`A`が数値でないため読み取られず不定値となっています。
|
3
3
|
|
4
|
-
`scanf("%d", &n);`を`scanf("%d%*c", &n);`とすることで`\n`を読み捨てるか、
|
4
|
+
`scanf("%d", &n);`を`scanf("%d%*c", &n);`、`scanf("%c %d", &c, &num);`を`scanf("%c %d%*c", &c, &num);`とすることで`\n`を読み捨てるか、
|
5
5
|
`scanf("%c %d", &c, &num);`を`scanf(" %c %d", &c, &num);`(`%c`の前にスペース)としてみてください。
|
6
6
|
|
7
7
|
後者なら`1 A 1<ENTER>`と入力された場合でも動作します。
|
2
動作について追記
answer
CHANGED
@@ -2,4 +2,6 @@
|
|
2
2
|
`num`は`A`が数値でないため読み取られず不定値となっています。
|
3
3
|
|
4
4
|
`scanf("%d", &n);`を`scanf("%d%*c", &n);`とすることで`\n`を読み捨てるか、
|
5
|
-
`scanf("%c %d", &c, &num);`を`scanf(" %c %d", &c, &num);`(`%c`の前にスペース)としてみてください。
|
5
|
+
`scanf("%c %d", &c, &num);`を`scanf(" %c %d", &c, &num);`(`%c`の前にスペース)としてみてください。
|
6
|
+
|
7
|
+
後者なら`1 A 1<ENTER>`と入力された場合でも動作します。
|
1
対策方法追記
answer
CHANGED
@@ -1,2 +1,5 @@
|
|
1
1
|
`c`には`1`の後のENTER(`\n`)が格納され、
|
2
|
-
`num`は`A`が数値でないため読み取られず不定値となっています。
|
2
|
+
`num`は`A`が数値でないため読み取られず不定値となっています。
|
3
|
+
|
4
|
+
`scanf("%d", &n);`を`scanf("%d%*c", &n);`とすることで`\n`を読み捨てるか、
|
5
|
+
`scanf("%c %d", &c, &num);`を`scanf(" %c %d", &c, &num);`(`%c`の前にスペース)としてみてください。
|