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