が、私はこのようなものをやろう:なぜMSVC++は "std :: strcat"を "安全でない"とみなしていますか? (C++)
char* prefix = "Sector_Data\\sector";
char* s_num = "0";
std::strcat(prefix, s_num);
std::strcat(prefix, "\\");
などなど、私は警告を取得し
warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead.
なぜstrcatのが危険とみなされ、そして方法がありますstrcat_sを使わずにこの警告を取り除くには?唯一の方法は警告を取り除くために場合
はまた、それが動作しないか、strcat_sを使用することです(構文ワイズ:どうやら、それは2つの引数を取りません)。
あなたの例がひどく間違っていることを知っておくべきです。文字列定数(char * s = "hello";など)は書き込み可能ではありません。あなたが運が良ければ、クラッシュするでしょう、あなたが不運な場合は、アプリケーションがいくつかの微妙な方法で正しく実行されません。 適切な方法は、次のようなものです。 接頭辞[SIZE] = "Sector_Data \\ sector"; SIZEはプレフィックスを保持するのに十分な大きさで、追加する予定のものは何でも構いません。 –
書かれているように、あなたの例にはバッファオーバーフローが含まれています。可能なバッファオーバーフローだけではなく、特定のバッファオーバーフロー。 –