我在一个文件中有某些数据,想将它存储到 C 中的结构数组中。我能够获取数据,但是当我将它设置为结构数组时,每个元素都被相同的数据替换。
谁能帮我读取数据并将其存储到结构数组中。
我的代码片段如下:
int main(){
FILE * inp;
char a[20],b[20],c[20],d[20],e[20],f[20];
struct CD s;
struct CD cdList[4];
int i=0;
inp = fopen("data.txt", "r");
if(!inp)
{
printf("Unable ot open file\n");
}
while (fscanf(inp,"%s %s %s %s %s %s",&a,&b,&c,&d,&e,&f) != EOF)
{
//printf("%d",i);
setCD(&cdList[i],a,b,c,d,e,f);
//cdList[i]=s;
printCD(&cdList[i]);
i=i+1;
}
//getTopRating(cdList);
system("PAUSE");
return 1;
}
/*set function*/
void setCD(struct CD * cd,char artist[] ,char title[],char year[],char genre[],char rating[], char fan[]){
cd->Artist=artist;
cd->Title=title;
cd->Year=year;
cd->Genre=genre;
cd->Rating=rating;
cd->Fan=fan;
}
/*print structure*/
void printCD(struct CD *cd){
printf("%s %s %s %s %s %s \n",
cd->Artist,
cd->Title,
cd->Year,
cd->Genre,
cd->Rating,
cd->Fan
);
}
struct CD{
char* Artist;
char* Title;
char* Year;
char* Genre;
char* Rating;
char* Fan;
};
最佳答案
由于你的数据是字符串,仅仅复制指针是不好的。因为所有 cd->Artist
都将指向相同的位置,即 a
(在 main()
中)。
代替
cd->Artist=artist;
你应该做的
cd->Artist = strdup(artist);
对您要存储的所有字符串类型成员执行此操作。
关于c - 在 C 中使用函数返回结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22678521/