下面我自己写了一个,但有个错误,说32行的fp使用没有初始化,不会了啊,而且不知道改完能不能正确运行出来,求大佬帮我看看。
#include<stdio.h>
#include<stdlib.h>
#define size 8
struct Yi
{
int no;
char name[3];
char xiang[50];
}Y[8]={{1,"乾","天行健,君子以自强不息"},{29,"坎","水洊至,习坎。君子以常德行习教事"},{52,"艮","兼山,艮。君子以思不出其位"},{51,"震","洊雷,震。君子以恐惧修省"},{57,"巽","随风,巽。君子以申命行事"},{30,"离","明两做,离。大人以继明照四方"},{2,"坤","地势坤,君子以厚德载物"},{58,"兑","丽泽兑,君子以朋友讲习"}};
void save()
{
FILE *fp;
int i;
if((fp=fopen("sign.txt","w+"))==NULL)
{
printf("不能打开文件\n");
return;
}
for(i=0;i<size;i++)
{
if(fwrite(&Y[i],sizeof(struct Yi),1,fp)!=1)
printf("文件写入错误\n");
fclose(fp);
}
}
int main()
{
FILE *fp;
int i;
for(i=0;i<size;i++)
{
fwrite(&Y[i],sizeof(struct Yi),1,fp);
}
save();
for(i=0;i<size;i++)
{
fread(&Y[i],sizeof(struct Yi),1,fp);
printf("卦序:%d\n卦名:%s\n卦象:%s\n\n",Y[i].no,Y[i].name,Y[i].xiang);
}
fclose(fp);
return 0;
}
修改如下,供参考:
//将下文中八卦的有关内容(结构体数组)以文本方式存储到sign.txt 文件中,读取文中的内容输出。
#include<stdio.h>
#include<stdlib.h>
#define size 8
struct Yi
{
int no;
char name[4];
char xiang[64];
}Y[8]={{1,"乾","天行健,君子以自强不息"},
{29,"坎","水洊至,习坎。君子以常德行习教事"},
{52,"艮","兼山,艮。君子以思不出其位"},
{51,"震","洊雷,震。君子以恐惧修省"},
{57,"巽","随风,巽。君子以申命行事"},
{30,"离","明两做,离。大人以继明照四方"},
{2, "坤","地势坤,君子以厚德载物"},
{58,"兑","丽泽兑,君子以朋友讲习"}};
void save()
{
FILE *fp;
int i;
if((fp=fopen("sign.txt","w+"))==NULL)
{
printf("不能打开文件\n");
return;
}
for(i=0;i<size;i++)
{
fwrite(&Y[i],sizeof(struct Yi),1,fp);
// printf("文件写入错误\n");
}
fclose(fp);
}
int main()
{
struct Yi x[8];
FILE *fp;
int i;
if((fp=fopen("sign.txt","r+"))==NULL)
{
printf("不能打开文件,退出程序后重新运行!\n");
//return;
}else{
for(i=0;i<size;i++)
{
fread(&x[i],sizeof(struct Yi),1,fp);
printf("卦序:%d\n卦名:%s\n卦象:%s\n\n",x[i].no,x[i].name,x[i].xiang);
}
fclose(fp);
}
save();
return 0;
}