【发布时间】:2016-10-30 08:27:43
【问题描述】:
注释掉scanf循环后段错误错误消失。为什么那个循环给我一个分段错误?
char** nameArray = malloc(numNames * sizeof(char *));
for(i =0; i< 10; i++) {
nameArray[i] = malloc(25 * sizeof(char));
}
for (i = 0; i< numNames; i++) {
scanf("%s", &nameArray[i]);
}
for (i =0; i<numNames; i++) {
free(nameArray[i]);
}
【问题讨论】:
-
字符串被扫描多长时间?尝试 malloc 大数组,看看是否能解决问题。
-
扫描到
nameArray[i],而不是&nameArray[i]。还使用"%24s"作为格式字符串并检查scanf的返回值。
标签: c arrays pointers segmentation-fault