File Handling Basics
C mein files handle karne ke liye <stdio.h> ka FILE* type use hota hai — ye ek "file pointer" hai jo file ke saath ek connection (stream) represent karta hai. fopen(filename, mode) file kholta hai aur ek FILE* return karta hai (ya NULL agar fail ho jaaye).
Modes: "r" (read), "w" (write — agar file exist karti hai to overwrite, warna nayi banao), "a" (append — end mein add karo), aur inke binary versions "rb"/"wb"/"ab" binary files ke liye. fclose(fp) file ko band karta hai — ye zaroori hai, kyunki bina close kiye, buffered data disk par likha hi nahi jaata.
#include <stdio.h>
int main() {
FILE *fp = fopen("data.txt", "w");
if (fp == NULL) {
printf("File nahi khul payi!\n");
return 1;
}
fprintf(fp, "Hello, File!\n");
fclose(fp); // zaroori — warna data disk par save nahi hoga
return 0;
}- FILE* = file ke saath connection (stream)
- fopen(name, mode) → NULL check zaroori
- fclose() bhoolna = buffered data disk par save nahi hoga
"r"/"w"/"a" text mode mein file kholte hain — Windows par ye automatically newline characters (\n ↔ \r\n) translate karte hain. "rb"/"wb"/"ab" binary mode mein koi translation nahi hota — raw bytes exactly waise hi likhe/padhe jaate hain jaise hain. Structs ya images jaisa non-text data hamesha binary mode mein handle karo.
FILE *fp1 = fopen("notes.txt", "w"); // text mode
FILE *fp2 = fopen("image.bin", "wb"); // binary mode — no translation
struct Record { int id; float score; };
struct Record r = {1, 95.5};
FILE *fp3 = fopen("records.dat", "wb");
fwrite(&r, sizeof(struct Record), 1, fp3); // raw bytes likho
fclose(fp3);fopen(filename, "r") NULL return karega agar file exist nahi karti — ye sabse simple tareeka hai file existence check karne ka bina koi extra library ke.
FILE *fp = fopen("config.txt", "r");
if (fp == NULL) {
printf("File exist nahi karti\n");
} else {
printf("File mil gayi!\n");
fclose(fp);
}