पाठ 31 / 36
फाइल पढ़ना और लिखना
टेक्स्ट के लिए fprintf/fscanf, कच्चे बाइट के लिए fread/fwrite।
टेक्स्ट फाइल पंक्ति दर पंक्ति पढ़ें
फाइल के अंत में fgets NULL लौटाता है, जो लूप की शर्त का भी काम करता है।
FILE *fp = fopen("notes.txt", "r");
if (fp == NULL) { perror("open"); return 1; }
char line[100];
while (fgets(line, sizeof(line), fp) != NULL) {
printf("%s", line);
}
fclose(fp);कच्चे डेटा के लिए fwrite / fread
बाइनरी मोड सटीक बाइट संरचना पढ़ता/लिखता है — यह केवल टेक्स्ट के लिए नहीं, स्ट्रक्चर के लिए भी उपयोगी है।
struct Point { int x, y; } p = {3, 4};
FILE *fp = fopen("point.bin", "wb");
fwrite(&p, sizeof(p), 1, fp);
fclose(fp);
struct Point q;
fp = fopen("point.bin", "rb");
fread(&q, sizeof(q), 1, fp);
fclose(fp);
printf("%d,%d\n", q.x, q.y);
Output:
3,4
त्वरित जाँच: फाइल न खुल पाने पर fopen क्या लौटाता है?
- NULL
- एक खाली स्ट्रिंग
- यह प्रोग्राम क्रैश कर देता है
Answer
NULL — विफलता पर fopen NULL लौटाता है — handle उपयोग करने से पहले हमेशा जाँचें।