c - 如何确定真正需要的char数组的大小?

标签 c arrays printf

我对以下代码有疑问:

void testing(int idNumber)
{
    char name[20];

    snprintf(name, sizeof(name), "number_%d", idNumber);
}

char 数组 name 的大小是 20,所以如果 idNumber111 它可以工作,但是实际的 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/

相关文章:

javascript - $scope.name.push() 不工作

c - printf 语句未在 netbean 中的 scanf 语句之前执行

c - printf() : When is %n written?

c++ - scanf ("%d\n"的问题,&i)

c - 向后搜索链表,导致崩溃和奇怪的字符

c++ - 指针的大小不指向任何内容

arrays - MongodB $仅从数组中拉出一个元素

c++ - 使用 snprintf 填充结构体

c - 具有 `for` 循环的菱形输出

c - 为什么这种计算整数符号的方法可以避免在带有标志寄存器 (IA32) 的 CPU 上发生分支?