gpt4 book ai didi

c - C 中的非贪婪 fscanf 和缓冲区溢出检查

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:08 25 4
gpt4 key购买 nike

我希望让 fscanf 识别何时发生潜在的溢出,但我无法思考如何最好地做到这一点。

例如,对于包含字符串的文件

**a**bb**cccc**

我做了一个

char str[10];
while (fscanf(inputf, "*%10[^*]*", str) != EOF) {

}

因为我保证 ** 和 ** 之间的值通常小于 10。但有时我可能会得到一个

**a**bb**cccc*

(没有最后一个 *)甚至可能是缓冲区溢出。

我考虑过使用

while (fscanf(inputf, "*%10[^*]", str) != EOF) {

}

(没有最后一个*)甚至

while (fscanf(inputf, "*%10s*", str) != EOF) {

}

但这会返回整个字符串。我试着看看我是否可以检查是否存在 *,但我无法让它工作。我也看过 fgets 的实现,但我不想让它变得复杂。有什么想法吗?

最佳答案

虽然 fscanf() 似乎被设计为通用表达式解析器,但很少有程序员依赖这种能力。相反,使用 fgets() 读取文本行,然后使用您选择或设计的解析器来剖析文本缓冲区。

使用 fgets() 的全部功能在不同的实现上是不可靠的,并不总是提供完整的功能,甚至不能正确实现这些功能。

关于c - C 中的非贪婪 fscanf 和缓冲区溢出检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5630325/

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