这是代码,
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
struct num{
int a[5];
};
int main(){
struct num n;
n.a[0]=56;
FILE * fp=fopen("saman.txt","w+");
if(fp==NULL){
printf("error");
exit(0);
}
fwrite(&n,sizeof(n),1,fp);
fread(&n,sizeof(n),1,fp);
printf("%i",n.a[0]);
}
输出为0,但它应该是56,不是吗? 你可以帮帮我吗?
答案 0 :(得分:4)
编写结构时,文件的位置指针会增加。当你尝试阅读时,它将尝试从当前位置读取,但它现在位于文件的末尾,因此你不会读取任何内容。
您应该检查fread
的返回值,看看它是否真的成功了。
在检查C规范(C11)第7.21.8.1节(标题为“fread函数”)之后,实际上并没有说出出现错误时数据应该发生什么,所以我会说的是您尝试读取的数据未定义,可以是任何内容。