Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-初始化指针数组_C_Arrays_Pointers - Fatal编程技术网

C-初始化指针数组

C-初始化指针数组,c,arrays,pointers,C,Arrays,Pointers,我试图初始化一个指针数组,但当我尝试在主界面中打印它时,它不工作,它显示一个分段错误,但是如果我尝试用相同的方法打印它,它会打印 这是我的密码 typedef struct File { char fileName[Max_FILE_NAME_LENGTH]; char *listOfFiles[]; }File; File dependencies[MAXIMUM_FILES]; void findListOfFiles(char *line, int i, int cur

我试图初始化一个指针数组,但当我尝试在主界面中打印它时,它不工作,它显示一个分段错误,但是如果我尝试用相同的方法打印它,它会打印

这是我的密码

typedef struct File
{
    char fileName[Max_FILE_NAME_LENGTH];
    char *listOfFiles[];
}File;

File dependencies[MAXIMUM_FILES];

void findListOfFiles(char *line, int i, int currDepend)
{
int idx=0,numOfFiles=0;;
while(line[i]!='\n')
{
    char *name=(char *)malloc(65*sizeof(char));
    while(line[i]!=',' && line[i]!='\n')
    {
        name[idx]=line[i];
        i++;
        idx++;
    }
    name[idx]='\0';
    dependencies[currDepend].listOfFiles[numOfFiles]=name;
    printf("%s+", dependencies[currDepend].listOfFiles[numOfFiles]);
    if(line[i]=='\n')
    {
        if(name){
            free(name);
            name=NULL;
        }
        break;
    }
    if(name){
        free(name);
        name=NULL;
    }
    numOfFiles++;
    i++;
    idx=0;
}
}

实际上,您从未在任何地方为
listOfFiles
成员分配空间。这意味着该数组的大小基本上为零,因此对其中任何条目的所有写入都将超出范围

如果希望
dependencies
成为全局变量,则必须为
listOfFiles
数组设置一个固定大小,或者将其设置为指向指针的指针,并在需要时进行分配/重新分配


另外,将指针
名称
分配给数组后,您将
释放
分配的内存,这意味着数组中现在的指针指向释放的内存。

列表文件分配是否正确?现在,在我放入大小为100的数组后,当我试图打印它时,它不会打印任何内容