我是 C 的新手。我正在尝试创建一个 C 程序作为练习的简单票务系统。
我想将结构写入二进制文件然后读取它。但它没有将任何内容写入二进制文件。
我得到的只是
文件成功关闭。
文件成功关闭。
二进制文件 (ticket.bin) 仍然是空的。
如果有人可以输入一个示例来帮助我理解如何将结构写入二进制文件并读取它。
define STATIONNUM 10//Maximun number of station.
define rate1 160
define rate2 190
define rate3 230
struct Ticket{
int code;//code of the list
char station[20];//destination name.
int price;//transportation fee.
};
int main(){
FILE *fp;
int c;//for open close judgement return value.
int i;//use at for loop.
struct Ticket list[STATIONNUM]={
{1, "NewYork", rate1},
{2, "London", rate1},
{3, "Paris", rate1},
{4, "Tokyo", rate1},
{5, "HongKong ", rate2},
{6, "Sydney", rate2},
{7, "Milan", rate2},
{8, "Berlin", rate2},
{9, "Vancouver", rate3},
{10, "Afghanistan", rate3},
};
//open a binary file to write.
fp = fopen("ticket.bin", "wb");
if(! fp){
printf("open file fail");
}
//write data into binary file.
if (fwrite(list, sizeof(list[0]), STATIONNUM, fp) != STATIONNUM);
//close it.
c = fclose(fp);
//judge if it's closed.
if(c == -1){
printf("File close failed.\n");
}else if(c == 0){
printf("File successfully closed.\n");
}
//open binary file to read.
fp = fopen("ticket.bin", "rb");
if(! fp){
printf("open file fail");
}
fread(list, sizeof(struct Ticket), STATIONNUM, fp);
//close it.
c = fclose(fp);
//judge if it's closed.
if(c == -1){
printf("File close failed.\n");
}else if(c == 0){
printf("File successfully closed.\n");
}
}