我读到,使用“%1024s”而不是“%s”会阻止在代码中创建安全漏洞。
“%1024s”与“%s”有何不同?

最佳答案

scanf()中,大概吧?

So you can and you should read its man page.

基本上,%1024s最大化要扫描的字符串的长度(1024个字符),因此它将始终装入1025字节长的缓冲区(0终止符为1024 + 1)中。 %s没有此限制,因此,如果缓冲区小于scanf()试图放入的字符串,则会发生缓冲区溢出,程序将调用未定义的行为。

09-10 20:22