warning: ‘__builtin_snprintf’ output may be truncated before the last format character [-Wformat-truncation=]
"%s", evspan->text);
^
len = strlen(evspan->text);
evspan->ent->content = malloc(len+1);
snprintf(evspan->ent->content, len,
"%s", evspan->text);
我在gcc 8上看到了这个警告。如果不使用-Wformat-截断选项,该如何防止这种情况发生呢?
发布于 2022-02-07 01:55:53
snprintf
的第二个参数是缓冲区的长度,而不是最大字符串长度。
呼吁应该是:
snprintf(evspan->ent->content, len + 1, "%s", evspan->text);
这与传递给malloc
的长度匹配。
如果您的完整代码与这里显示的一样简单,那么给出的关于snprintf
的注释并不是最好的选择。
https://stackoverflow.com/questions/71012622
复制相似问题