【发布时间】:2020-08-17 14:18:40
【问题描述】:
我试图在 C 中构建一个结构数组,而不定义数组的最大长度。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct text {
char *final;
} text;
int main() {
int n, sizearray = 10, i;
char *str;
text *testo;
testo = (text *)malloc(sizeof(text) * sizearray);
fgets(str, 1024, stdin);
i = 0;
while (str[0] != 'q') {
if (i == sizearray - 1) {
testo = (text *)realloc(testo, sizearray * 2 * sizeof(text));
}
n = strlen(str);
n = n + 1;
testo[i].finale = (char *)malloc(sizeof(char) * n);
strcpy(testo[i].finale, str);
i++;
fgets(str, 1024, stdin);
}
for (i = 0; i < sizearray; i++)
printf("%s \n", testo[i].finale);
return 0;
}
这给了我
process finished with exit code 139 (interrupted by signal 11:SIGSEV).
我做错了什么?
【问题讨论】:
-
你没有为 str 分配内存,试试,
char str [1024]; -
str指向哪里?还要学习使用调试器。调试器会告诉您崩溃发生的哪里,这会为您提供有价值的提示,例如崩溃最有可能发生在fgets此处,因此问题与fgets之后的任何内容无关。