0
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-truncation 选项的情况下防止这种情况发生?

4

1 回答 1

0

第二个参数snprintf是缓冲区的长度,而不是最大字符串长度。

调用应该是:

snprintf(evspan->ent->content, len + 1, "%s", evspan->text);

这与传递给的长度相匹配malloc


如果您的完整代码与此处显示的一样简单,那么关于snprintf不是最佳选择的评论确实适用。

于 2022-02-07T01:55:53.713 回答