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