C:无法将结构的字符串分配给数组

C:无法将结构的字符串分配给数组,c,C,我基本上是从Excel文件中提取字符串以将其存储在数组中。将它们分配到阵列时,我遇到了一个问题 这是excel文件的一行: Beutegier;杰克·凯彻姆;海恩;2009;3453675622 这是我职能的一部分: buecher[*num\u buch].autor=NULL; buecher[*num_buch].titel=strdup(strtok(linebuf,delim))//工作正常 char*str1=strtok(NULL,delim)//这个名字就是:杰克·凯彻姆 bu

我基本上是从Excel文件中提取字符串以将其存储在数组中。将它们分配到阵列时,我遇到了一个问题

这是excel文件的一行:

Beutegier;杰克·凯彻姆;海恩;2009;3453675622
这是我职能的一部分:

buecher[*num\u buch].autor=NULL;
buecher[*num_buch].titel=strdup(strtok(linebuf,delim))//工作正常
char*str1=strtok(NULL,delim)//这个名字就是:杰克·凯彻姆
buecher[*num_buch].autor->name=strdup(str1)//程序在此崩溃
这是我的结构:

typedef结构{
char*name;/*Zeiger auf vollstdg.Namen dieses Autors*/
未签字的做空anz_buecher;/*Anzahl der Bücher dieses Autors*/
}自动变速器;
/*结构定义*/
类型定义结构{
char*滴度;/*Zeiger auf滴度串*/
Autor*Autor;/*Zeiger auf元素des Autoren阵列*/
Verlag*Verlag;/*Verlage阵列的Zeiger auf元件*/
未签名短款erscheinungsjahr;/*Jahreszahl 4-stellig,z.B.:2009*/
char*isbn;/*Zeiger auf isbn字符串*/
}布赫;

我不知道为什么程序会在那一行崩溃。我对第一行几乎做了同样的事情,它在那里工作正常。

问题是由于
autor
NULL
指针:

buecher[*num_buch].autor            = NULL;
然后尝试通过它存储:

buecher[*num_buch].autor->name      = strdup(str1);
这试图通过
Autor
设置
Autor
结构指针的
name
字段。但这只是一个
NULL
指针,并且没有
Autor
结构,因此没有要存储的
name
字段

您可以通过将第一个分配更改为:

buecher[*num_buch].autor            = malloc(sizeof(Autor));
检查
malloc
返回的值以确保它不是
NULL
,这也是一种很好的做法


不要忘记,您以后需要释放由
malloc
strdup
等返回的存储,以避免内存泄漏。

您是否初始化了
buecher[*num_buch].autor
?请发布一个。不,我没有,我应该初始化它吗?是的,当然。取消对未初始化指针的引用是个坏主意。