2
null charに関する質問があります。私はバッファを持っていますchar buffer_2[245]
null文字は文字列の最後に2回追加されます
memset(buffer_2, 0, 245);
strcpy(buffer_2, "Test");
strcat(buffer_2, "\0");
3行目が必要ですか? \ 0は自動的に追加されないためです。
null charに関する質問があります。私はバッファを持っていますchar buffer_2[245]
null文字は文字列の最後に2回追加されます
memset(buffer_2, 0, 245);
strcpy(buffer_2, "Test");
strcat(buffer_2, "\0");
3行目が必要ですか? \ 0は自動的に追加されないためです。
3行目が必要ですか? \ 0は自動的に追加されないためです。
3行目は必要ありません。 strcpy
には'\0'
が追加されます。 man strcpy
から
:文字列はsrcで指さ
strcpy()
機能コピー、終端のNULLバイト('\0'
)を含む は、バッファにDESTによって指さ。文字列は重複しないで、宛先文字列 destはコピーを受け取るのに十分な大きさでなければなりません。バッファーに注意してください オーバーラン! (バグを参照してください。)
はまた、次の点に注意してくださいのタイプが値'T'
、'e'
、's'
、't'
と'\0'
とconst char [5]
です。
ありがとうございました。バッファにガベージ・バリューがないことを確認するために、コピーする前に 'memset(buffer_2、0、245);'を使用することをお勧めしますか? – user2140086
Mandarotyではありませんが、 'buffer_2'が' malloc'されているかクライアントから受け取られている場合は、セキュリティ問題を避けるため 'memset'を' 0'で行うことを好みます。 (これには機密情報が含まれている可能性があります) –
@ user2140086:最初の行は必要ありません。 – usr2564301