C:fread()从结构化二进制文本文件返回垃圾值

时间:2017-08-12 08:23:12

标签: c file

我的fread()问题是它返回垃圾值而不是二进制文本文件中找到的值。

这些是我正在使用的结构:

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

#define C_S 8
#define F_N 24
#define L_N 16

typedef struct nT{
    char fN[F_N],lN[L_N],mI;
}nameType;

typedef struct rec{
    nameType name;
    char course[C_S];
    int year;
    unsigned long ID;
}studRec;

typedef struct node{
    studRec student;
    struct node *link;
}*stack;

typedef enum{TRUE,FALSE}boolean;

这就是我将studRec结构数组转移到二进制文件中的方式:

#define SIZE 3

int main(){
    FILE *fp;
    int i;
    studRec records[SIZE]={
    {{"Kawin","Cheong",'E'},"BSCS",3,13104658},
    {{"Jeanne","Garciano", 'T'},"BSIT",4,1103333},
    {{"Dhiana","Oyao",'G'},"BSCS",3,1510222}
    };

    fp=fopen("studentRecords.txt","wb+");

    if(fp!=NULL){
        fwrite(records,sizeof(studRec),SIZE,fp);
        printf("\nSuccessful transfer of records.");
    }
    fclose(fp);

    getch();
    return 0;
}

现在这是我的片段,我使用fread()将其读回程序,并且我从结构化数组year的第二个元素显示变量buffer:< / p>

int main(){
    stack S;
    int i;
    studRec buffer[SIZE];
    FILE *fp=fopen("studentRecords.txt","wb+");

    S=initStack();
    if(S!=NULL){
        printf("\nMalloc is succesful.");
        getch();
        system("cls");
    }

    fread(buffer,sizeof(struct rec),3,fp);
    printf("\n%d",buffer[1].year);

    getch();
    return 0;
}

this正是我得到的:

希望有人可以向我解释为什么它没有返回我期待的价值。

0 个答案:

没有答案