回答編集履歴
5
アドレス計算結果の表示フォーマットを ptrdiff_t に変更
test
CHANGED
@@ -15,8 +15,8 @@
|
|
15
15
|
/* 文字列の検索処理 */
|
16
16
|
for(int i=0; i<WNUM; i++) {
|
17
17
|
for(char *p=words[i]; (p=strstr(p,search)); ) {
|
18
|
-
printf("%d 番目の文字列の%
|
18
|
+
printf("%d 番目の文字列の%td文字目から一致\n", i, (++p)-words[i]);
|
19
19
|
}
|
20
20
|
}
|
21
21
|
```
|
22
|
-
(私の環境でアドレス計算結果の表示が `%d` は warning になりましたので
|
22
|
+
(私の環境でアドレス計算結果の表示が `%d` は warning になりましたので ~~%ld~~ `%td` に変えています。)
|
4
修正
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
```
|
11
11
|
|
12
12
|
検索も、 `strstr` 関数(とポインタ)が扱えればかなり短くなります。
|
13
|
-
`strstr` は、第一引数の
|
13
|
+
`strstr` は、第一引数の文字列から第二引数の文字列を探します。見つかればその位置(アドレス)を返し. 見つからなければ `null` を返してきます。
|
14
14
|
```c
|
15
15
|
/* 文字列の検索処理 */
|
16
16
|
for(int i=0; i<WNUM; i++) {
|
3
修正
test
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
}
|
10
10
|
```
|
11
11
|
|
12
|
-
検索も、 strstr (とポインタ)が扱えればかなり短くなります。
|
12
|
+
検索も、 `strstr` 関数(とポインタ)が扱えればかなり短くなります。
|
13
|
-
strstr は、第一引数のアドレスから第二引数の文字列を探します。見つかればその位置(アドレス)を返し. 見つからなければ null を返してきます。
|
13
|
+
`strstr` は、第一引数のアドレスから第二引数の文字列を探します。見つかればその位置(アドレス)を返し. 見つからなければ `null` を返してきます。
|
14
14
|
```c
|
15
15
|
/* 文字列の検索処理 */
|
16
16
|
for(int i=0; i<WNUM; i++) {
|
2
追記
test
CHANGED
@@ -19,3 +19,4 @@
|
|
19
19
|
}
|
20
20
|
}
|
21
21
|
```
|
22
|
+
(私の環境でアドレス計算結果の表示が `%d` は warning になりましたので `%ld` に変えています。)
|
1
追加
test
CHANGED
@@ -8,3 +8,14 @@
|
|
8
8
|
words[pos2][i] = c;
|
9
9
|
}
|
10
10
|
```
|
11
|
+
|
12
|
+
検索も、 strstr (とポインタ)が扱えればかなり短くなります。
|
13
|
+
strstr は、第一引数のアドレスから第二引数の文字列を探します。見つかればその位置(アドレス)を返し. 見つからなければ null を返してきます。
|
14
|
+
```c
|
15
|
+
/* 文字列の検索処理 */
|
16
|
+
for(int i=0; i<WNUM; i++) {
|
17
|
+
for(char *p=words[i]; (p=strstr(p,search)); ) {
|
18
|
+
printf("%d 番目の文字列の%ld文字目から一致\n", i, (++p)-words[i]);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
```
|