我有一个带菜单的程序。 Struct被称为“Siunta”,结构具有称为“nauja”的新值。我正在尝试将其写入文件,然后从文件中读取。下面提供了读写功能。编译器中的错误消息:
| 144 |错误:'Siunta'未声明(首次使用此功能)|。
可能出现什么问题?
写作: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);
答案 0 :(得分:3)
发生的错误是由于sizeof(Siunta)可能是sizeof(struct Siunta),但你也可以使用sizeof(nauja2)(可能更好)。
阅读你的代码,我看到你已经写了一些Siunta结构的字段,但是你想读完所有结构之后!
你必须使用:
编写结构fwrite(&nauja, sizeof(nauja), 1, fp);
然后你可以阅读:
fread(&nauja2, sizeof(nauja2), 1, fp);
答案 1 :(得分:1)
您需要在{<1}}中写下struct Siunta
而不是Siunta
:
fread(&nauja2, sizeof(Siunta),1,fp);
或者,您可以事先创建一个typedef,如下所示:
typedef struct Siunta Siunta;
答案 2 :(得分:0)
只需按字段编写结构字段即可。还可以使用网络订购号码。这将使其在未来证明,同时在开始时设置版本号。