cplusplus.comから: 「この関数はmemcpy
、ソース内の終端の null 文字をチェックしません。常に正確に num バイトをコピーします。」
したがって、次のコードは実行時エラーになるはずですよね?
char str1[20] = "";
char str2[20] = "Another Text---";
memcpy(str1, str2, strlen(str2));
printf("%s\n%s", str1, str2);
しかし、gcc コンパイラを使用すると、このコードから常に正しい出力が得られます。これは、memcpy が実際に最後からヌル文字をコピーすることを意味しますか、str2
それとも単なるランダムなケースですか?
編集:すべての NULL 文字で文字列を初期化するstr1[20] = "A"
いくつかの回答が指摘しているため、 で同じ動作が得られます。str1[20] = ""