gpt4 book ai didi

c - 不正确的二进制文件读取

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

我是 C 的新手,正在尝试读取结构并将其写入 .dat 文件。当我添加数据时,我看到了 .dat 文件中的字符。但是,我无法读取数据,当我的代码应该为每次出现的结构输出“val”时,我的代码什么也不输出。

我查看了许多来源,但我找不到我的代码与那些有何不同。

https://www.geeksforgeeks.org/readwrite-structure-file-c/该网站用于初步了解如何执行此操作。

Read/Write to binary files in C我用它来查看如何修复我的代码,但解决方案没有帮助。

我尝试更改 while 循环中的语句。

struct person
{
int id;
char lastName[15];
char firstName[15];
char age[4];
};


int main(void) {
//create new file
FILE *fp = fopen("file.dat", "wb+");

struct person a = {10, "Smith", "John", 25};
fwrite(&a, sizeof(a), 1, fp);

struct person b = {2, "Ali", "Jon", 12};
fwrite(&b, sizeof(b), 1, fp);

struct person c = {19, "Walter", "Martha", 82};
fwrite(&c, sizeof(c), 1, fp);

struct person p;
while(fread(&p, sizeof(p), 1, fp))
printf("val");
}

目前,它应该打印 3 个“Vals”,因为有三个人被添加到 dat 文件中。但是,没有任何内容被打印出来。

感谢您的帮助。

最佳答案

当你完成写入记录时,文件指针(“光标”,你正在读/写的位置)在文件的末尾。在尝试之前,您必须使用 rewind()fseek()fsetpos() 将该位置设置回文件的开头从文件中读取。

关于c - 不正确的二进制文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56015037/

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