首页 > 解决方案 > 尽管实际上输入了我想要的整数大小,但字符字符串长度没有正确初始化?

问题描述

我正在使用 C 中的 char 数组。我在上一步中设置了大小。当我打印出来时,它清楚地显示 num_digits 为 1。但是当我将它放入设置 char 数组的大小以使其成为大小为 num_digits 的 char 数组时,它将数组的大小设置为 6。在下一步当我打印 strlen(number_array) 时,它会打印 6。打印出来我得到带有很多问号的东西。有谁知道为什么会这样?

int num_digits = get_num_digits(number);
printf("Num digits are %d\n", num_digits);
char number_array[num_digits];
printf("String len of array: %d\n", strlen(number_array));

标签: cvariable-assignment

解决方案


您需要空终止您的数组。

char number_array[num_digits + 1];
number_array[num_digits] = '\0';

如果没有这个空终止符,C 就无法知道您何时到达数组的末尾。


推荐阅读