回答編集履歴

1

誤記修正

2021/04/17 03:55

投稿

dodox86
dodox86

スコア9269

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