gpt4 book ai didi

无法将 char*** 作为参数传递

转载 作者:行者123 更新时间:2023-11-30 17:48:45 25 4
gpt4 key购买 nike

在这里很容易看出我想要完成什么。读取文件列表并将其传递给另一个函数。为什么这不起作用。当我尝试将文件名存储在本地字符**中时,它工作得很好,但无法通过指针将其发送回。给出段错误。

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;
}

总是出现段错误...并且没有希望从 main() 打印 fileList

最佳答案

在这里,您覆盖了指向 char** fileList 的指针,这可能是一个问题:

 fileList = malloc(sizeof(char***));

在这里,您覆盖了先前分配的指针,这看起来像是另一个问题:

 *fileList = malloc(*noOfFiles * sizeof(char*));

关于无法将 char*** 作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com