我的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正是我得到的:
希望有人可以向我解释为什么它没有返回我期待的价值。