我读到,使用“%1024s”而不是“%s”会阻止在代码中创建安全漏洞。
“%1024s”与“%s”有何不同?
最佳答案
在scanf()
中,大概吧?
So you can and you should read its man page.
基本上,%1024s
最大化要扫描的字符串的长度(1024个字符),因此它将始终装入1025字节长的缓冲区(0终止符为1024 + 1)中。 %s
没有此限制,因此,如果缓冲区小于scanf()
试图放入的字符串,则会发生缓冲区溢出,程序将调用未定义的行为。