如何抑制 snprintf() 警告“指令写入最多 xx 个字节...”

问题描述

我正在使用 snprintf() 将字符串写入缓冲区。

#define MAXLEN 256
char line[MAXLEN];
char buf[MAXLEN];

snprintf(buf,sizeof(buf),"Hi%s",line);

编译时提示警告

directive writing up to 256 bytes into a region of size 254

有没有更好的方法解决这个问题?我不想使用 malloc(...) 或类似的动态分配函数

解决方法

我想要第二个结果。

然后您必须确保目标缓冲区足够长以容纳它。例如:

char line[MAXLEN];
char buf[MAXLEN + 2];

这样 buf 可以容纳整个 line 和两个 "Hi" 字符。