gpt4 book ai didi

c - sscanf,文字或指针格式

转载 作者:行者123 更新时间:2023-12-02 01:09:54 25 4
gpt4 key购买 nike

让我们看看这行 C 代码:

if(sscanf(s, "%04d%02d%02d%02d%02d%02d", &year, &month, &day, &hour, &min, &sec) != EOF) { 
// ... other stuff
}

我正在使用 Microchip C30 编译器。 's' 和其他变量之前已定义。我的整个代码的大小是:237396 字节。

让我们尝试将格式字符串从文字更改为指针:

const char *format = "%04d%02d%02d%02d%02d%02d";
if(sscanf(s, format, &year, &month, &day, &hour, &min, &sec) != EOF) {
// ... other stuff
}

现在的大小是:243798 字节!超过 6 kB!

这是预期的行为吗?

最佳答案

在第一种情况下,编译器知道要使用什么选择的 sscanf() 转换集:字符串到 int

sscanf(s, "%04d%02d%02d%02d%02d%02d", ...

在第二种情况下,缺少此细节,编译器认为您可能会传递任何格式说明符,因此整个 scanf() 转换集需要在代码中.

const char *format
sscanf(s, format, ...

关于c - sscanf,文字或指针格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20237613/

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