gpt4 book ai didi

c - 从文件中动态读取结构时 fread 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 03:58:17 26 4
gpt4 key购买 nike

我正在创建一个链表,然后将其写入文件并再次读取。我正在使用 fwrite 和 fread 一次写入和读取结构的整个实例。但问题是它不能正常工作。我想在看到输出文件后写作工作正常但仍然不确定。但是阅读根本不起作用。

结构如下

struct student
{
int roll_num;
char name[100];
struct student *next;
};

逻辑如下

ifd = fopen("qwer1234.txt","wb");
struct student *temp;
temp = start;
while(temp != NULL)
{
fwrite(temp, sizeof(struct student), 1, ifd);
temp = temp->next;
}
close(ifd);


ifd = fopen("qwer1234.txt","rb");
temp = NULL;
temp = malloc(sizeof(struct student));
fread(temp, sizeof(struct student), 1, ifd);
start = temp;
//temp->next = NULL;
printf("%s\t%d\n",temp->name,temp->roll_num);
temp = malloc(sizeof(struct student));
/*while(fread(temp, sizeof(struct student), 1, ifd) == 1)
{

temp->next = start;
start = temp;
printf("%d/n",temp->roll_num);
temp = malloc(sizeof(struct student));

}*/
close(ifd);

虽然我暂时只读单例,但还是不行。 temp->name 中没有存储任何内容,temp->roll_num 中存储了 0。我坚持了最后 4 个小时。我可以通过单独存储结构元素来实现,但这次我想用不同的方式来实现。

对于所有重要的人来说,这是一个家庭作业问题。

如有任何帮助,我们将不胜感激。谢谢:)

最佳答案

首先,

close(ifd); 

不正确,因为它不是描述符,而是 FILE*。使用:

fclose(ifd);

因为你没有刷新,除非它是一个相当大的列表,否则很可能什么都没有写,你的新分配将是列表中唯一的一个,因为你的文件中还没有数据。

关于c - 从文件中动态读取结构时 fread 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14422506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com