फाइल में लिखना और पढ़ना
C में फाइल ऑपरेशन्स के लिए stdio.h लाइब्रेरी के फंक्शन्स उपयोग होते हैं। यहाँ हम फाइल में टेक्स्ट लिखने, वर्ण गिनने और सामग्री को उल्टा (reverse) करके प्रिंट करने का उदाहरण देखेंगे।
मुख्य फंक्शन्स
| फंक्शन | उद्देश्य |
|---|---|
fopen() | फाइल खोलना (मोड: "r", "w", "a" आदि) |
fputc() | एक वर्ण फाइल में लिखना |
fgetc() | एक वर्ण फाइल से पढ़ना |
ftell() | फाइल पॉइंटर की वर्तमान स्थिति (बाइट्स में) लौटाना |
rewind() | फाइल पॉइंटर को शुरुआत पर ले जाना |
fseek() | फाइल पॉइंटर को विशिष्ट स्थान पर ले जाना |
fclose() | फाइल बंद करना |
लॉजिक: फाइल सामग्री को उल्टा प्रिंट करना
- फाइल को
"w"मोड में खोलें और उपयोगकर्ता इनपुट लिखें (EOF/Ctrl+Z तक)। ftell()से लिखे गए वर्णों की संख्या जानें।rewind()से पॉइंटर शुरुआत पर लाएं।- फाइल को
"r"मोड में फिर खोलें। fseek(fp, 0, SEEK_END)से अंत पर जाएं,ftell()से कुल आकार लें।- लूप में
fseek(fp, -i, SEEK_END)से पीछे जाएं औरfgetc()से पढ़ें।
पूर्ण C प्रोग्राम
#include <stdio.h>
int main() {
FILE *fp;
char ch;
int n, i = 0;
// 1. लिखने के लिए खोलें
fp = fopen("reverse.txt", "w");
if (fp == NULL) {
printf("फाइल नहीं बन सकी।\n");
return 1;
}
printf("टेक्स्ट दर्ज करें (अंत में Ctrl+Z / Ctrl+D दबाएं):\n");
while ((ch = getchar()) != EOF) {
fputc(ch, fp);
}
// 2. वर्ण गिनें
n = ftell(fp);
printf("\nदर्ज वर्णों की संख्या = %d\n", n);
// 3. पॉइंटर रिवाइंड करें
rewind(fp);
printf("rewind के बाद ftell = %d\n", ftell(fp));
fclose(fp);
// 4. पढ़ने के लिए फिर खोलें और उल्टा प्रिंट करें
fp = fopen("reverse.txt", "r");
if (fp == NULL) return 1;
fseek(fp, 0, SEEK_END); // अंत पर जाएं
n = ftell(fp); // कुल आकार
printf("उल्टी सामग्री:\n");
while (i < n) {
i++;
fseek(fp, -i, SEEK_END); // अंत से i बाइट पीछे
printf("%c", fgetc(fp));
}
printf("\n");
fclose(fp);
return 0;
}
आउटपुट उदाहरण
टेक्स्ट दर्ज करें (अंत में Ctrl+Z / Ctrl+D दबाएं): TutorialsPoint ^Z दर्ज वर्णों की संख्या = 14 rewind के बाद ftell = 0 उल्टी सामग्री: tniopslairotuT
महत्वपूर्ण नोट्स
getchar()से इनपुट लेते समय Windows में Ctrl+Z, Linux/Mac में Ctrl+D EOF के लिए उपयोग करें।ftell()बाइनरी मोड में अधिक विश्वसनीय होता है; टेक्स्ट मोड में नई लाइन परिवर्तन के कारण मान भिन्न हो सकते हैं।- बड़ी फाइलों के लिए पूरी सामग्री मेमोरी में पढ़कर उल्टा करना अधिक कुशल होता है।