尽管实际上输入了我想要的整数大小,但字符字符串长度未正确初始化?

标签 c variable-assignment

我正在使用 C 语言处理字符数组。我在上一步中设置了大小。当我打印出来时,它清楚地显示 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));

最佳答案

您需要以 null 终止数组。

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

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

关于尽管实际上输入了我想要的整数大小,但字符字符串长度未正确初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57484114/

相关文章:

c - 如何使用 ld_preload 将库预加载到 wine(windows 游戏)?

代码在创建的字符串末尾不断给我 m

c - 请帮我释放这个动态分配的数组

python - 理解列表的问题(我认为)

r - R语言赋值

java - 通过 JNI 更快的 Math.exp()?

Pebble中将圆分成n等分的点的坐标

javascript - JavaScript 对象属性可以引用同一对象的另一个属性吗?

sql - 在 Sybase SQL 中连接简单字符串的意外结果

c# - 为十进制值分配字符串值