我对以下代码有疑问:
void testing(int idNumber)
{
char name[20];
snprintf(name, sizeof(name), "number_%d", idNumber);
}
char 数组 name
的大小是 20,所以如果 idNumber
是 111
它可以工作,但是实际的 idNumber 是111111111111111111111111111111
,如何确定char数组应该有多大以保留snprintf
的结果?
最佳答案
好吧,如果 int
在您的平台上是 32 位,那么它可以打印的最宽值将是 -20 亿,即 11 个字符,所以您需要 7 来表示 number_
,11 个用于 %d
,1 个用于空终止符,所以总共 19 个。
但是您通常应该检查 snprintf()
的返回值,以确保您有足够的空间。例如,如果“语言环境”设置为标准“C”以外的其他设置,它可能会打印千位分隔符,在这种情况下,您需要比现有字符多 2 个字符。
关于c - 如何确定真正需要的char数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26509681/