注释掉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]);
}
最佳答案
首先你需要改变
for(i =0; i< 10; i++) {
至
for(i =0; i< numNames; i++) {
因为您需要创建足够的条目。
另外你需要改变这一行
scanf("%s", &nameArray[i]);
至
scanf("%s", nameArray[i]);
因为
nameArray[i]
是所需的字符指针。而且最好用
scanf("%24s", nameArray[i]);
因为这样可以防止缓冲区溢出。另外,检查scant的返回值也是一个好主意