gpt4 book ai didi

c - 作业 : warning: no closing ‘]’ for ‘%[’ format [-Wformat=]

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

我在运行这段代码时收到上述警告。我有点不确定,因为它在 mac OS 环境中运行良好,但是一旦我在 linux 中运行它,它就停止工作了。

while(sscanf(page.ptr, "%[^\n]\n%[^\0]", currline, page.ptr) == 2)
{
...
}

这些是我在 Linux 系统上收到的其他警告:

weather.c: In function ‘main’:
weather.c:121:9: warning: no closing ‘]’ for ‘%[’ format [-Wformat=]
while(sscanf(page.ptr, "%[^\n]\n%[^\0]", currline, page.ptr) == 2)
^
weather.c:121:9: warning: embedded ‘\0’ in format [-Wformat-contains-nul]

谁能向我解释为什么这在两个系统上会有所不同,以及为什么它在这个系统上不起作用?或者我应该考虑什么来更正此警告?

最佳答案

C 字符串以 NUL 字符结束(字节值为 0,通常写为 \0)。所以你不能把一个放在字符串的中间,这是第二个(完全正确的)警告告诉你的。

由于 scanf 将在到达“结尾”时停止读取格式——即 NUL 字符——最后的 %[ 格式未正确终止。这是第一个警告。

scanf 标准库函数可能不关心丢失的终止符。您可能在两个系统上提供了不同的编译器警告选项,或者默认警告不同。

无论哪种方式,您都应该修复您的代码,这样它就不会给您这些警告。

关于c - 作业 : warning: no closing ‘]’ for ‘%[’ format [-Wformat=],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28228167/

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