संभव डुप्लिकेट:
“while(!feof(file))” is always wrongसी पढ़ने बाइनरी फ़ाइलें
अगर मैं आउटपुट फ़ाइल के लिए एक सरणी लिख सकते हैं और मैं फ़ाइल को बंद करें, उसके बाद फिर से फ़ाइल को खोलने और अंत तक सब कुछ पढ़ा फ़ाइल फ़ाइल तक पहुंच गई है, हालांकि फ़ाइल में केवल 4 नंबर हैं, प्रोग्राम 5 नंबर पढ़ और प्रिंट करेगा, क्यों?
कार्यक्रम उत्पादन:
a[0] = 4
a[1] = 7
a[2] = 12
a[3] = 34
a[4] = 34
save.bin (एक हेक्स संपादक के साथ) immedately fread()
करने के लिए कॉल के बाद फ़ाइल के अंत के लिए
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;
}
बहुत बहुत धन्यवाद !!! 'Feof()' सेट किया गया है, यह समझाते हुए – Cristi