【发布时间】:2013-11-24 13:03:58
【问题描述】:
我有这个代码:
int main() {
int i=0, n=0;
char sep=NULL;
double **aero=(double**)malloc(sizeof(double*));
*aero=(double*)malloc(2*sizeof(double));
printf("Zadejte souradnice:\n");
while (1) {
aero=(double**)realloc(aero,(n+1)*sizeof(double*));
for (i=0; i<n+1; i++) {
aero[i]=(double*)realloc(aero[i],2*sizeof(double));
}
if ((scanf("[%lf,%lf]%c",&aero[n][0],&aero[n][1],&sep))==3 && (sep=='\n' || sep==' ')) {
n++;
continue;
} else if (!feof(stdin)) {
printf("Nespravny vstup.\n");
freeArray2D(aero,n);
return 0;
}
break;
}
}
它工作正常,但我只能扫描坐标(格式:[x,y])19 次。然后它向我显示分段错误(核心转储)。我使用 Linux 编译器 gcc -Wall -pedantic main.c -lm 我不知道,问题出在哪里。感谢您的帮助。
【问题讨论】:
-
向我们展示一些示例输入和
freeArray2D函数。 -
OT:
char sep = NULL;应为char sep = '\0';或... = 0;。