फाइल ऑपरेशन्स का अवलोकन
C में फाइल्स पर पांच मूल ऑपरेशन किए जाते हैं:
- नाम देना (Naming) - फाइल का नाम और पथ निर्दिष्ट करना
- खोलना (Opening) -
fopen()से फाइल पॉइंटर प्राप्त करना - पढ़ना (Reading) -
fgetc(),fgets(),fread(),fscanf() - लिखना (Writing) -
fputc(),fputs(),fwrite(),fprintf() - बंद करना (Closing) -
fclose()से संसाधन मुक्त करना
फाइल खोलने के मोड्स (File Opening Modes)
| मोड | विवरण | फाइल मौजूद है | फाइल नहीं है |
|---|---|---|---|
r | केवल पढ़ना | शुरुआत से खुलती है | NULL लौटाता है |
w | केवल लिखना | सामग्री मिट जाती है | नई बनती है |
a | जोड़ना (Append) | अंत से लिखना शुरू | नई बनती है |
r+ | पढ़ना + लिखना | शुरुआत से | NULL |
w+ | लिखना + पढ़ना | सामग्री मिट जाती है | नई बनती है |
a+ | जोड़ना + पढ़ना | अंत से | नई बनती है |
बाइनरी मोड के लिए अंत में b जोड़ें: rb, wb, ab, r+b, w+b, a+b।
सिंटैक्स सारांश
FILE *fp;
fp = fopen("filename.txt", "r"); // खोलना
// पढ़ना
int ch = fgetc(fp);
char str[100];
fgets(str, 100, fp);
fread(ptr, size, count, fp);
// लिखना
fputc(ch, fp);
fputs(str, fp);
fwrite(ptr, size, count, fp);
fclose(fp); // बंद करना
व्यावहारिक उदाहरण: फाइल कॉपी (सुधारित)
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *src, *dest;
char srcName[100], destName[100];
char buffer[4096];
size_t bytes;
printf("स्रोत फाइल: ");
scanf("%99s", srcName);
src = fopen(srcName, "rb"); // बाइनरी मोड
if (!src) { perror("स्रोत त्रुटि"); return 1; }
printf("लक्ष्य फाइल: ");
scanf("%99s", destName);
dest = fopen(destName, "wb");
if (!dest) { perror("लक्ष्य त्रुटि"); fclose(src); return 1; }
while ((bytes = fread(buffer, 1, sizeof(buffer), src)) > 0) {
if (fwrite(buffer, 1, bytes, dest) != bytes) {
perror("लेखन त्रुटि");
break;
}
}
fclose(src);
fclose(dest);
printf("कॉपी पूर्ण।\n");
return 0;
}
महत्वपूर्ण फंक्शन्स
| फंक्शन | उपयोग |
|---|---|
feof(fp) | EOF जांच |
ferror(fp) | त्रुटि जांच |
rewind(fp) | शुरुआत पर जाएं |
fseek(fp, offset, whence) | विशिष्ट स्थान पर जाएं |
ftell(fp) | वर्तमान स्थिति प्राप्त करें |
remove(name) | फाइल हटाएं |
rename(old, new) | फाइल नाम बदलें |
सर्वोत्तम अभ्यास
- हमेशा
fopen()का रिटर्न मान जांचें। - बाइनरी डेटा के लिए
"rb"/"wb"उपयोग करें। - बड़े डेटा के लिए बफर (
fread/fwrite) उपयोग करें। fclose()हमेशा कॉल करें, त्रुटि होने पर भी।perror()से सिस्टम त्रुटि संदेश प्रिंट करें।