回答編集履歴
2
修正
answer
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
---
|
10
10
|
なお、偶然でしょうけど、**C言語**としては間違ってはいません。
|
11
11
|
|
12
|
-
構造体へのポインタは**C言語の場合**私の知る限りの処理系では先頭要素へのポインタと同値です。
|
12
|
+
構造体へのポインタは**C言語の場合**~~私の知る限りの処理系では~~([N1570 §6.7.2.1p15](https://port70.net/~nsz/c/c11/n1570.html#6.7.2.1p15)で保証されてます)先頭要素へのポインタと同値です。
|
13
13
|
そして、**C言語の場合**ポインタは暗黙の変換を規格上認めています。
|
14
14
|
|
15
15
|
ただ、tmpbufが先頭要素でなくなった途端によく分からない事がおきるので、明示的にtmpbufを指定した方がよいでしょう。
|
1
修正
answer
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
`warning: passing argument 1 of ‘strcpy’ from incompatible pointer type [-Wincompatible-pointer-types] strcpy(tmp->next,t);`は**警告**であって**エラー**ではありません。
|
2
2
|
|
3
3
|
---
|
4
|
+
strcpyに渡された第1引数がstrcpyの引数とは非互換とのことなので、
|
5
|
+
strcpyの定義を確認すると`char *strcpy(char *s1, const char *s2);`です。
|
6
|
+
渡している`tmp->next`は構造体へのポインタなので`char*`ではありません。
|
7
|
+
渡すべきは`tmp->next->tmpbuf`となります。
|
4
8
|
|
9
|
+
---
|
5
|
-
偶然でしょうけど、C言語としては間違ってはいません。
|
10
|
+
なお、偶然でしょうけど、**C言語**としては間違ってはいません。
|
11
|
+
|
12
|
+
構造体へのポインタは**C言語の場合**私の知る限りの処理系では先頭要素へのポインタと同値です。
|
13
|
+
そして、**C言語の場合**ポインタは暗黙の変換を規格上認めています。
|
14
|
+
|
15
|
+
ただ、tmpbufが先頭要素でなくなった途端によく分からない事がおきるので、明示的にtmpbufを指定した方がよいでしょう。
|
16
|
+
|
17
|
+
**ついでに**
|
18
|
+
tが`\0`で終わる文字列であることが担保されていませんので
|
19
|
+
その状態で`strcpy`を使うのは不適切です。
|