# फाइल पढ़ना और लिखना — C प्रोग्रामिंग

Source: https://www.geekswithgeeks.com/hi/c/c-file-read-write

> टेक्स्ट के लिए fprintf/fscanf, कच्चे बाइट के लिए fread/fwrite।

## टेक्स्ट फाइल पंक्ति दर पंक्ति पढ़ें

फाइल के अंत में `fgets` `NULL` लौटाता है, जो लूप की शर्त का भी काम करता है।

```c
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

बाइनरी मोड सटीक बाइट संरचना पढ़ता/लिखता है — यह केवल टेक्स्ट के लिए नहीं, स्ट्रक्चर के लिए भी उपयोगी है।

```c
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
```

**Quiz:** फाइल न खुल पाने पर fopen क्या लौटाता है?

- [x] NULL
- [ ] एक खाली स्ट्रिंग
- [ ] यह प्रोग्राम क्रैश कर देता है

*Answer:* NULL. विफलता पर fopen NULL लौटाता है — handle उपयोग करने से पहले हमेशा जाँचें।
