gpt4 book ai didi

c - sscanf 是否被认为可以安全使用?

转载 作者:太空狗 更新时间:2023-10-29 16:33:51 24 4
gpt4 key购买 nike

我对 sscanf 不好的建议有模糊的内存。我知道如果我使用字段宽度说明符它不会溢出缓冲区,所以我的内存只是在跟我开玩笑吗?

最佳答案

我认为这取决于您如何使用它:如果您正在扫描 int 之类的东西,那很好。如果您正在扫描一个字符串,则它不是(除非我忘记了一个宽度字段?)。


编辑:

扫描字符串并不总是安全的。

如果您的缓冲区大小是一个常量,那么您当然可以将其指定为类似 %20s 的内容。但如果它不是常量,则需要在格式字符串中指定它,并且需要执行以下操作:

char format[80]; //Make sure this is big enough... kinda painful
sprintf(format, "%%%ds", cchBuffer - 1); //Don't miss the percent signs and - 1!
sscanf(format, input); //Good luck

这是可能的,但非常容易出错,就像我在之前的编辑中所做的那样(忘记处理空终止符)。您甚至可能会溢出格式字符串缓冲区。

关于c - sscanf 是否被认为可以安全使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5873402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com