Possible duplicate:
"while (! feof (file))" is always mistaken
If I write an array to the output file and close the file, then open the file again and read everything until the end of the file is reached, although the file contains only 4 numbers, the program will read and print 5 numbers, why?
Program output:
a[0] = 4 a[1] = 7 a[2] = 12 a[3] = 34 a[4] = 34
save.bin (with hex editor)
04000000 07000000 0C000000 22000000
#include <stdio.h> #include <stdlib.h> #define path "save.bin" int main(void) { FILE *f=NULL; int a[]={4,7,12,34},i,n=4,k; f=fopen(path,"wb"); if(f==NULL) { perror("Error"); exit(1); } for(i=0;i<n;i++) // or I could use fwrite(a,sizeof(int),n,f); fwrite(&a[i],sizeof(int),1,f); fclose(f); f=fopen(path,"rb"); if(f==NULL) { perror("Error"); exit(1); } i=0; while(!feof(f)) { fread(&k,sizeof(int),1,f); printf("a[%d] = %d\n",i,k); i++; } printf("\n"); fclose(f); return 0; }
source share