我有两个程序,一个用于加载archive.txt中的结构数组,另一个用于读取archive.txt。问题是,当我读取存档时,文件末尾会出现很多符号。
结构:
typedef struct{
int dd;
int mm;
int aa;
} date;
typedef struct{
char nya[30];
char dni[9];
date dat;
} student;
这是将一组结构加载到archive.txt
的程序int main()
{
student al[3]={{"Pedro","34434343",{11,11,2011}},{"Jose","23233233",{11,12,2003}},{"Ramon","23434334",{11,2,1002}}};
FILE * pf = fopen("C:\\Users\\usuario\\Desktop\\archive.txt","w");
fwrite(al,sizeof(student)*3,3,pf);
fclose(pf);
return 0;
}
这是阅读archive.txt的程序:
int main(){
student alu;
FILE * pf = fopen("C:\\Users\\usuario\\Desktop\\archive.txt","r");
while(!feof(pf)){
fread(&alu,sizeof(student),1,pf);
printf("%s\n",alu.nya);
printf("%s\n",alu.dni);
printf("%d %d %d\n",alu.dat.dd,alu.dat.mm,alu.dat.aa);
}
fclose(pf);
}
答案 0 :(得分:2)
您正在撰写太多数据:
plt.axhspan(0,2, color='yellow', alpha=0.25)
fwrite(al,sizeof(student)*3,3,pf);
的第二个参数指定每个元素的大小,第三个参数指定元素的数量。您通过将大小乘以3并计算为3来进行双重工作。请执行以下操作:
fwrite
此外,您可以检查fwrite(al,sizeof(student),3,pf);
,fopen
和fwrite
的返回值,以确保它们成功。