strcpy
を使用して文字列をコピーしようとすると、コンパイルエラーが発生しました。
error C4996 'strcpy': This function or variable may be unsafe.
代わりにstrcpy_s
の使用を検討してください。非推奨を無効にするには、_CRT_SECURE_NO_WARNINGS
を使用します。詳細については、オンラインヘルプを参照してください。
strcpy
とstrcpy_s
の違いは何ですか?
strcpyは安全でない機能です。 strcpy()を使用して、文字列を格納するのに十分な大きさでないバッファに文字列をコピーしようとすると、バッファオーバーフローが発生します。
strcpy_s()は、strcpy()のセキュリティ強化バージョンです。 strcpy_sを使用すると、コピー中のバッファーオーバーフローを回避するために、宛先バッファーのサイズを指定できます。
char tuna[5]; // a buffer which holds 5 chars incluing the null character.
char salmon[] = "A string which is longer than 5 chars";
strcpy( tuna, salmon ); // This will corrupt your memory because of the buffer overflow.
strcpy_s( tuna, 5, salmon ); // strcpy_s will not write more than 5 chars.