teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

書式修正

2020/07/23 16:12

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,7 +1,19 @@
1
1
  `c`には`1`の後のENTER(`\n`)が格納され、
2
2
  `num`は`A`が数値でないため読み取られず不定値となっています。
3
3
 
4
+ ```diff
4
- `scanf("%d", &n);`を`scanf("%d%*c", &n);`、`scanf("%c %d", &c, &num);`を`scanf("%c %d%*c", &c, &num);`とすることで`\n`を読み捨てるか、
5
+ -scanf("%d", &n);
5
- `scanf("%c %d", &c, &num);`を`scanf(" %c %d", &c, &num);`(`%c`の前にスペース)としてみてください。
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

コード修正

2020/07/23 16:12

投稿

SHOMI
SHOMI

スコア4079

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

動作について追記

2020/07/23 16:10

投稿

SHOMI
SHOMI

スコア4079

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

対策方法追記

2020/07/23 16:04

投稿

SHOMI
SHOMI

スコア4079

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`の前にスペース)としてみてください。