पाठ 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 उपयोग करने से पहले हमेशा जाँचें।