这是我的结构和方法,但它不起作用。任何人都可以帮我解决问题吗?感谢
这是struct:
struct album
{
char singerName[30];
char year[4];
char title[30];
char songName[50];
char songLength[50];
struct album *next;
};
struct album *a=NULL;
这是方法:
struct album *addAlbum(struct album *list,char* year,char *title,char *singerName)
{
struct album *temp;
temp =(struct album*) malloc(sizeof(struct album));
strcpy(temp->singerName,singerName);
strcpy(temp->title,title);
strcpy(temp->year,year);
temp -> next = NULL;
if(list==NULL)
{
return temp;
}
else
{
temp->next=list;
return temp;
}
}
答案 0 :(得分:1)
目标缓冲区控制不足。
如果输入year
为“2013”,则以下内容可能会失败。这是一个字符串,需要4 + 1个字节。
char year[4];
...
strcpy(temp->year,year);
简单修复是使用char year[5]
。但是这会把罐子拉到路上。
最好使用strncpy(temp->year,year, sizeof(temp->year)-1); temp->year[sizeof(temp->year)-1] = '\0'
。存在其他选项以防止超限。