-2

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

4

1 回答 1

3

scanf(),大概,对吧?

所以你可以而且你应该阅读它的手册页。

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

于 2013-05-01T19:50:23.303 回答