【发布时间】:2021-01-12 14:46:39
【问题描述】:
我有一个指向char 数组的指针,我需要打印整个数组(不是一个接一个,而是整个数组)。我有错误:zsh: segmentation fault。我不明白为什么。
我的代码从stdin 获取文本并将字符放入数组中。如果第一个数组 char_array 不够大,我将它们放在第二个名为 bigger_array 的数组中。
int main() {
int c;
int index = 0;
size_t size = 100;
char *char_array = malloc(size * sizeof(char));
if (char_array != 0) {
while ((c = getchar()) != EOF && index < size) {
char_array[index] = c;
index++;
}
size_t newSize = size * 100;
char *bigger_array = realloc(char_array, newSize * sizeof(char));
if (bigger_array != 0) {
bigger_array = char_array;
while ((c = getchar()) != EOF && index < newSize) {
bigger_array[index] = c;
index++;
}
size = newSize;
}
}
printf(*char_array);
return 0;
}
【问题讨论】:
-
即使第一个数组有足够的输入元素,您仍在使用
bigger_array。 -
当
char_array == 0不正确时,尝试打印char_array指向的内容。 -
打印出数组时,最好的办法是使用循环,但您需要查看代码,如果您将内存重新分配给新的 char 指针为什么你会有更大的数组 = 字符数组?你也没有从标准输入获取文件
标签: c dynamic printf allocation