Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
「%s」の代わりに「%1024s」を使用すると、コードにセキュリティ ホールが作成されるのを防ぐことができると読みました。「%1024s」と「%s」の違いは?
ではscanf()、おそらくそうでしょう?
scanf()
したがって、そのマニュアルページを読むことができます。
基本的に、%1024sスキャンする文字列の長さを 1024 文字に最大化するため、常に 1025 バイトの長さのバッファーに収まります (0 ターミネーターの場合は 1024 + 1)。%sにはこの制限がないため、バッファが文字列よりも小さい場合、scanf()バッファ オーバーランが発生し、プログラムは未定義の動作を呼び出します。
%1024s
%s