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

回答編集履歴

5

誤字の修正

2015/09/05 17:01

投稿

umeaji
umeaji

スコア101

answer CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  4.
17
17
 
18
- while の条件内で *s++ としていますので、
18
+ while の条件内で *str++ としていますので、
19
19
  *str が '\0' でなければ、str のアドレス操作が行われます。
20
20
 
21
21
  while の動作的には正しいのですが、
@@ -34,6 +34,7 @@
34
34
  int str_chnum(const char *str, char c) // 1
35
35
  {
36
36
  int count = 0;
37
+
37
38
  while (*str) { // 4
38
39
  if (*str == c) {
39
40
  count++;

4

誤字修正

2015/09/05 17:01

投稿

umeaji
umeaji

スコア101

answer CHANGED
@@ -16,7 +16,7 @@
16
16
  4.
17
17
 
18
18
  while の条件内で *s++ としていますので、
19
- *str が '\0' でなければ、s のアドレス操作が行われます。
19
+ *str が '\0' でなければ、str のアドレス操作が行われます。
20
20
 
21
21
  while の動作的には正しいのですが、
22
22
  これでは、while 内の if 文で先頭の文字の分がカウント出来ません。

3

5を追加

2015/09/05 13:24

投稿

umeaji
umeaji

スコア101

answer CHANGED
@@ -23,7 +23,10 @@
23
23
 
24
24
  while の最後で str++; をしましょう。
25
25
 
26
+ 5.
26
27
 
28
+ str_chnum の戻り値は、単に count を返すだけで良いです。
29
+
27
30
  修正例です。
28
31
  ```c
29
32
  #include <stdio.h>
@@ -38,7 +41,7 @@
38
41
  str++; // 4
39
42
  }
40
43
 
41
- return count;
44
+ return count; // 5
42
45
  }
43
46
 
44
47
  int main(void)

2

誤字の修正

2015/09/05 13:17

投稿

umeaji
umeaji

スコア101

answer CHANGED
@@ -5,7 +5,8 @@
5
5
 
6
6
  2.
7
7
 
8
+ 1回目の scanf でエンターを入力した事により、
8
- 2回目の scanf でエンターを入力した事により、改行コードを読み込んでしまっています。
9
+ 2回目の scanf 改行コードを読み込んでしまっています。
9
10
  2回目の scanf の前で getchar(); して改行コードを読み飛ばしてください。
10
11
 
11
12
  3.

1

誤字の修正

2015/09/05 13:14

投稿

umeaji
umeaji

スコア101

answer CHANGED
@@ -15,7 +15,7 @@
15
15
  4.
16
16
 
17
17
  while の条件内で *s++ としていますので、
18
- *s が '\0' かを判断し、s のアドレス操作が行われます。
18
+ *str が '\0' でなければ、s のアドレス操作が行われます。
19
19
 
20
20
  while の動作的には正しいのですが、
21
21
  これでは、while 内の if 文で先頭の文字の分がカウント出来ません。