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

回答編集履歴

3

追記

2018/10/31 15:39

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -11,4 +11,12 @@
11
11
  scanf("%c",n);
12
12
  > ```
13
13
 
14
- scanf を捨て、fgets を利用するのも賢明です。とりわけ文字列を入力する場合は。
14
+ scanf を捨て、fgets を利用するのも賢明です。とりわけ文字列を捌く場合は。
15
+
16
+ ---
17
+ ついでに。この箇所も変ですね。
18
+ > ```C
19
+ for(i = 0; i < sizeof(str); i++) {
20
+ > ```
21
+
22
+ sizeof ではなく strlen を使うべき場面かと。

2

追記

2018/10/31 15:39

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -9,4 +9,6 @@
9
9
  scanf関数の第二引数以降は、アドレスでなくてはいけません。ここでは`&n`を渡してください。
10
10
  > ```C
11
11
  scanf("%c",n);
12
- > ```
12
+ > ```
13
+
14
+ scanf を捨て、fgets を利用するのも賢明です。とりわけ文字列を入力する場合は。

1

修正

2018/10/31 15:36

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,8 +1,12 @@
1
- バッファに改行文字が残っているのが原因です。
1
+ 文字列を入力する際、バッファに改行文字が残ってしまうのが原因です。
2
- 次のように書けば、最初の文字(ここでは改行文字)を捨てることができます。
2
+ 次のように書けば、改行文字を捨てることができます。
3
3
  ```C
4
- printf("検索したい文字を入力してください\n");
4
+ printf("文字を入力してください\n");
5
- scanf("%*c%c", &n);
5
+ scanf("%s%*c", str);
6
6
  ```
7
7
 
8
+ また、次の部分もおかしいです。
8
- 第二引数も修正していますが、これはアドレスを渡さければいけないから
9
+ scanf関数の第二引数以降アドレスくてはいけません。ここは`&n`を渡してください
10
+ > ```C
11
+ scanf("%c",n);
12
+ > ```