加载结构数组,然后将其加载到存档上

时间:2017-04-26 19:23:00

标签: c struct

我有两个程序,一个用于加载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);

}

This is the result of the program.

1 个答案:

答案 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); fopenfwrite的返回值,以确保它们成功。