%s和%1024s之间的差异

时间:2013-05-01 19:47:45

标签: c string-formatting

我读到使用“%1024s”而不是“%s”可以防止在代码中创建安全漏洞。 “%1024s”与“%s”有什么不同?

1 个答案:

答案 0 :(得分:2)

scanf()中,大概是吧?

So you can and you should read its man page.

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