0
很容易看到在這裏試圖完成什麼。讀取文件列表並將其傳遞給另一個函數。 這是行不通的。 當我嘗試將文件名存儲在本地char **中時,它工作得很好,但無法通過指針將其發回。出現分段錯誤。無法通過char ***作爲參數
int main(){
char** fileList;
int noOfFiles;
char* path = ".";
makeList(&fileList, &noOfFiles, path);
return 0;
}
void makeList(char ***fileList, int* noOfFiles, char* path){
struct dirent **fileListTemp;
*noOfFiles = scandir(path, &fileListTemp, NULL, alphasort);
int i;
fileList = malloc(sizeof(char***));
*fileList = malloc(sizeof(char**));
printf("total: %d files",*noOfFiles);
for(i = 0; i < *noOfFiles; i++){
printf("%s\n",fileListTemp[i] -> d_name); //works just fine
}
*fileList = malloc(*noOfFiles * sizeof(char*));
for(i=0; i < *noOfFiles; i++){
//*fileList[i] = fileListTemp[i] -> d_name; this didn't work either...
strcpy(*fileList[i], fileListTemp[i]->d_name);
printf("%s\n", *fileList[i]);
}
//fileList = &list;
return;
}
分段錯誤總是... 並沒有從主()
刪除參數'int aFlag'或將其添加到調用中。指針'&fileList'在函數調用後不存在,因此分配給它並不是一個好主意。 – dastrobu
指定它不是一個好主意?將fileList存儲在本地char **中,並將它的指針返回到main working。但我不明白爲什麼...... – kBisla