我有以下代码:
typedef struct my_data {
char* name;
}my_data;
my_data data[]={
{ .name = "Peter" },
{ .name = "James" },
{ .name = "John" },
{ .name = "Mike" }
};
void loaddata()
{
FILE * in;
if((in = fopen("data.txt","rt")) != NULL) {
printf("start loading\n");
int i = 0;
while(!feof(in))
{
fscanf(in,"%s", &data[i].name);
printf("%s\n",data[i].name);
i++;
};
}
else
printf("loading not required\n");
fclose(in);
}
它给了我一个“被杀”的错误。
如何将文件data.txt中的数据加载到现有结构中,如果文件不存在则使用已定义的默认值?
答案 0 :(得分:1)
不需要“&”在:
fscanf(in,"%s", &data[i].name);
如果没有打开,则无需关闭文件流。
void loaddata()
{
FILE * in;
if((in = fopen("data.txt","rt")) != NULL) {
printf("start loading\n");
int i = 0;
while(!feof(in))
{
fscanf(in,"%s", data[i].name);
printf("%s\n",data[i].name);
i++;
};
fclose(in); /* need closing */
}
else
printf("loading not required\n");
/* no need closing */
}
UPD:创建具有已分配内存的结构,而不是指针。指针访问程序的一部分,而不是内存,因此您无法在那里保存数据。
typedef struct my_data {
char name[10];
}my_data;