C - 尝试从文件读取结构

标签 c struct

我有一个带有菜单的程序。结构体称为“Siunta”,具有新值的结构体称为“nauja”。我正在尝试将其写入文件,然后从文件中读取。下面提供了读取和写入的函数。编译器的错误信息:

|144|error: 'Siunta' undeclared (first use in this function)|.

可能出了什么问题?

写作:

FILE* fp = fopen("file.bin", "wb");
struct Siunta nauja;
fwrite(&(nauja.siuntos_nr), sizeof(nauja.siuntos_nr), 1, fp);
fwrite(&(nauja.destination), sizeof(nauja.destination), 1, fp);
fwrite(&(nauja.svoris), sizeof(nauja.svoris), 1, fp);
fclose(fp);

阅读:

FILE* fp = fopen("file.bin", "rb");
struct Siunta nauja2;        
fread(&nauja2, sizeof(Siunta),1,fp);    
printf("siuntos nr: %d destination: %s Svoris: %d",nauja2.siuntos_nr, nauja2.destination, nauja2.svoris);

最佳答案

发生的错误是由于 sizeof(Siunta) 可能是 sizeof(struct Siunta),但您也可以使用 sizeof(nauja2) (这可能会更好)。

读你的代码,我看到你写了结构体Siunta的一些字段,但是在你想读所有结构体之后!

您必须使用以下方式编写结构:

fwrite(&nauja, sizeof(nauja), 1, fp);

那么您可以阅读:

fread(&nauja2, sizeof(nauja2), 1, fp);

关于C - 尝试从文件读取结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29589993/

相关文章:

c++ - 在 C++ 中循环数组时访问结构属性

c - 我正在使用 4 个 for 循环,2 个工作正常,其余 2 个显示问题 3,4 个循环显示无效答案

c - Posix 线程消费者无法正确打印

c - gcc sizeof float _Imaginary

Swift 4 多维数组还是结构体?

c - 动态设置指向 int 的指针给出不正确的大小

c# - F# 结构构造函数中的参数验证

c - fork、pipe exec 和 dub2

c - "if(n/10)"在C中是什么意思?

c++ - 静态数据类型(结构)的组织