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的数组后,当我试图打印它时,它不会打印任何内容