註釋掉scanf循環後,分段故障錯誤消失。爲什麼這個循環給我一個分段錯誤?我爲什麼從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大數組,看看它是否修復了這個問題。 – Tmx
掃描到'nameArray [i]',而不是'&nameArray [i]'。同樣使用'「%24s」'作爲格式字符串並檢查'scanf'的返回值。 –