【发布时间】:2014-12-27 14:33:28
【问题描述】:
我正在尝试用 C 语言编写一个程序来为我节省这种结构。首先,我的英语不是最好的,但我理解得很好。
主要问题是我不知道我会在哪里失败,因为我是新手,而且我确信我这样做有很多错误。我想稍后再读这个.bin,所以我不知道该怎么做,我会很感激一些帮助,谢谢:)
这是我的程序示例和我要保存的结构:
//HERE THE STRUCT//
typedef struct{
char name[MAX_Nom_Impresora+1];
int start,end;
} tExample;
int main ( int argc, char *argv[] ){
...
tSave f[4];
Save(f)
....
}
//HERE THE FUNCTION TO SAVE THE STRUCT//
int Save (tExample f[]){
FILE *pf;
char *File="list.bin";
int counter=0;
int error=0;
pf=fopen("File","a");
if(pf==NULL)
printf("\n Error.");
else{
fwrite(&f, sizeof(f),1, pf);
}
return error;
}
【问题讨论】:
-
我认为应该是`fopen(File, "a")。除此之外,它看起来不错。
-
查找序列化
-
sizeof(f)不会返回指针的大小吗?最好将元素的数量添加到该函数调用中并在fwrite中使用它和sizeof(tExample)。 -
另外,在从函数返回之前,您需要关闭文件。所以你需要打电话给
fclose(pf)。随着调用fopen("FILE","a")将打开一个名为 FILE 而不是 list.bin 的文件 -
文件应该以二进制模式打开,所以应该是
"ab",而不仅仅是"a"。