回答編集履歴
1
誤記修正
test
CHANGED
@@ -12,4 +12,4 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
とあります。「**二つの文字列 src と dest は重なってはならない。**」です。ご提示のコードはsrcとdestは同じものになっており、思いっきり重なっています。上記Linux manページの説明文中には`strcat`ではなく、もう少し安全な`strncat`の簡単な実装例が示されていますが、`src`の末端の`'\0'`が見つかるまでコピーし続ける、ということは、src
|
15
|
+
とあります。「**二つの文字列 src と dest は重なってはならない。**」です。ご提示のコードはsrcとdestは同じものになっており、思いっきり重なっています。上記Linux manページの説明文中には`strcat`ではなく、もう少し安全な`strncat`の簡単な実装例が示されていますが、`src`の末端の`'\0'`が見つかるまでコピーし続ける、ということは、`src`から`dest`へ1文字ずつコピーしているそばから`src`の文字列が伸びてしまうので、ずっとコピーし続け、すなわちバッファオーバーフローになります。いったん別のバッファへコピーしてから操作しましょう。
|