C Programming में File Handling: आसान Examples और Programs के साथ पूरी जानकारी |

C Programming File Handling
File Handling in C
C File Handling
File Handling in C Programming
C Programming File Handling Examples
C File Handling Programs
File Handling in C with Examples

Chapter 16: फाइल संभालना (File Handling)

📚 C Programming – पूरा कोर्स रोडमैप

⬅️ पिछला Chapter | वर्तमान Chapter: फाइल संभालना (File Handling) | अगला Chapter ➡️

Author: Mujtaba Ansari

C Programming में File Handling की मदद से हम अपने Program के Data को File में सुरक्षित रख सकते हैं और जरूरत पड़ने पर वापस पढ़ सकते हैं।

🌍 Real Life में File Handling के फायदे

File Handling सिर्फ Programming तक सीमित नहीं है। इसका इस्तेमाल कई Real-Life कामों में होता है:

  • 📄 Student Records – Students की जानकारी Save करने के लिए
  • 🛒 Shopping Websites – Product और Order Information संभालने के लिए
  • 🏥 Hospital Systems – Patient Records Save करने के लिए
  • 💰 Banking Systems – Account और Transaction Data Store करने के लिए
  • 📊 Business Software – Sales और Customer Data Store करने के लिए
  • 📝 Applications – User की Settings और Information Save करने के लिए

C Programming Language में File Handling: Examples और Programs के साथ पूरी जानकारी

क्या आपने कभी सोचा है कि Computer में Student Records, Customer Details, Bills या किसी Software का Data कैसे Save रहता है, जबकि Program बंद हो जाता है?

यहीं पर File Handling काम आता है।

C Programming में हम variables में Data store कर सकते हैं, लेकिन यह Data आमतौर पर Program के चलने तक ही रहता है। Program बंद होने के बाद अगर Data को कहीं Save नहीं किया गया है, तो वह उपलब्ध नहीं रहता।

File Handling की मदद से हम Data को File में Save कर सकते हैं और बाद में उसे फिर से Read, Update या Use कर सकते हैं।

इस article में हम File Handling को बिल्कुल आसान तरीके से समझेंगे। इसमें आप File क्या होती है, File Pointer, File Opening Modes, Important File Functions, Sequential Access, Random Access और Practical C Programs सीखेंगे।

File Handling के फायदे

File Handling सीखने से आप अपने C Programs को ज्यादा practical बना सकते हैं।

इसके कुछ मुख्य फायदे हैं:

  • Data को लंबे समय तक Save कर सकते हैं।
  • जरूरत पड़ने पर पुराने Data को Read कर सकते हैं।
  • Existing Data में नया Data Add कर सकते हैं।
  • Stored Data को Update और Manage कर सकते हैं।
  • बड़ी मात्रा में Information को Store कर सकते हैं।
  • अलग-अलग Files के बीच Data Copy कर सकते हैं।
  • Student, Employee, Billing और Inventory जैसे practical applications बना सकते हैं।

Simple भाषा में समझें तो File Handling का मतलब है File के साथ काम करना।

File में हम अपना Data Store कर सकते हैं। यह File Computer की Hard Disk, SSD या किसी दूसरे Storage Device में Save हो सकती है।

C Programming में File Handling के जरिए हम:

  • File Create कर सकते हैं
  • File Open कर सकते हैं
  • Data Read कर सकते हैं
  • Data Write कर सकते हैं
  • नया Data Add कर सकते हैं
  • Data Process कर सकते हैं
  • File Close कर सकते हैं

सबसे बड़ी बात यह है कि File में Save किया गया Data Program बंद होने के बाद भी उपलब्ध रह सकता है।

इसे Permanent या Persistent Data Storage भी कहा जाता है।

File Handling तब बहुत useful होती है जब Program को Data को केवल कुछ समय के लिए नहीं, बल्कि बाद में भी इस्तेमाल करने के लिए Save करना हो।

उदाहरण के लिए, अगर आप एक Student Management System बना रहे हैं, तो Student का Name, Roll Number और Marks केवल variables में रखने से काम नहीं चलेगा। आपको इन Details को File में Save करना होगा ताकि अगली बार Program चलाने पर वही Data फिर से मिल सके।

File Handling की मदद से हम:

  • Data को Permanently Save कर सकते हैं।
  • पहले से Saved Information को Read कर सकते हैं।
  • Existing File में नया Data Add कर सकते हैं।
  • Stored Records को Process कर सकते हैं।
  • Files के बीच Data Copy कर सकते हैं।
  • Real-world applications बना सकते हैं।

C में File Handling के लिए मुख्य रूप से <stdio.h> Header File के Functions का इस्तेमाल किया जाता है।

Functionइसका काम
fopen()File को Open या Create करना
fclose()Open File को Close करना
fgetc()File से एक Character पढ़ना
fputc()File में एक Character लिखना
fprintf()Formatted Data File में लिखना
fscanf()Formatted Data File से पढ़ना
fread()Binary Data पढ़ना
fwrite()Binary Data लिखना
fseek()File में किसी Position पर जाना
ftell()Current File Position पता करना
rewind()File की शुरुआत में वापस जाना
feof()File के End तक पहुँचने की स्थिति Check करना

File के साथ काम करने से पहले हमें एक File Pointer की जरूरत होती है।

File Pointer की मदद से C Program को पता चलता है कि हमें किस File के साथ काम करना है।

Syntax
FILE *fp;

यहाँ:

  • FILE C में File को Handle करने के लिए इस्तेमाल होने वाला type है।
  • fp हमारा File Pointer है।

Example:

FILE *fp;

fp = fopen("student.txt", "r");

इसमें student.txt नाम की File को Read करने के लिए Open किया गया है।

fopen() का इस्तेमाल File को Open करने के लिए किया जाता है। जरूरत के अनुसार यह नई File भी Create कर सकता है।

Syntax
FILE *fopen(const char *filename, const char *mode);

Example:

FILE *fp;

fp = fopen("student.txt", "w");

अगर File Open नहीं हो पाती है, तो fopen() NULL Return करता है।

इसलिए File Open करने के बाद Check करना अच्छी practice है:

if (fp == NULL)
{
    printf("Unable to open the file.");
}

File Mode यह बताता है कि हम File के साथ क्या करना चाहते हैं।

Modeआसान मतलब
"r"File को Read करने के लिए
"w"File में Write करने के लिए
"a"File के End में नया Data जोड़ने के लिए
"r+"Read और Write दोनों के लिए
"w+"Read और Write; पुराना Data हट सकता है
"a+"Read और End में नया Data Add करने के लिए

Binary Files के लिए b का इस्तेमाल किया जा सकता है:

"rb"
"wb"
"ab"
"rb+"
"wb+"
"ab+"

"r" Mode

"r" का इस्तेमाल किसी Existing File को Read करने के लिए होता है।

fp = fopen("data.txt", "r");

अगर File मौजूद नहीं है, तो File Open नहीं होगी।

"w" Mode

"w" File में Data Write करने के लिए इस्तेमाल होता है।

fp = fopen("data.txt", "w");

अगर File पहले से मौजूद है, तो उसका पुराना Content Overwrite हो सकता है।

"a" Mode

"a" का इस्तेमाल File के End में नया Data Add करने के लिए किया जाता है।

fp = fopen("data.txt", "a");

इसमें Existing Data को हटाया नहीं जाता।

File का काम पूरा होने के बाद उसे Close करना चाहिए।

इसके लिए fclose() Function का इस्तेमाल होता है।

Syntax
fclose(fp);

Example:

FILE *fp;

fp = fopen("student.txt", "r");

if (fp != NULL)
{
    /* File Operations */
    fclose(fp);
}

File Close करने से Resources Release होते हैं और Buffered Data को सही तरीके से Write होने में मदद मिलती है।

ध्यान रखें: सही Function fclose() है, fclosed() नहीं।

fgetc() File से एक Character पढ़ने के लिए इस्तेमाल होता है।

Syntax
ch = fgetc(fp);

Example:

int ch;

while ((ch = fgetc(fp)) != EOF)
{
    putchar(ch);
}

यह Program File के Characters को एक-एक करके पढ़ेगा।

fgetc() Character के साथ-साथ EOF भी Return कर सकता है। इसलिए इसके Result को Store करने के लिए सामान्यतः int Variable इस्तेमाल किया जाता है।

fputc() Function

fputc() File में एक Character Write करता है।

Syntax
fputc(ch, fp);

Example:

FILE *fp;

fp = fopen("data.txt", "w");

if (fp != NULL)
{
    fputc('A', fp);
    fclose(fp);
}

यह Program File में A Character Save करेगा।

fprintf() Function

fprintf() का काम printf() जैसा ही है, लेकिन फर्क यह है कि printf() Screen पर Data दिखाता है, जबकि fprintf() Data को File में Write कर सकता है।

Example
fprintf(fp, "Name: %s\nAge: %d\n", name, age);

यह Student या Employee जैसी Information को File में Save करने के लिए बहुत useful है।

fscanf() Function

fscanf() File से Formatted Data Read करने के लिए इस्तेमाल होता है।

Example
fscanf(fp, "%d %s", &roll, name);

अगर File में Data एक निश्चित Format में रखा गया है, तो fscanf() उसे Read करने में मदद करता है।

अब कुछ आसान Programs की मदद से समझते हैं कि File Handling practically कैसे काम करती है।

Example 1: File में Student Names Save करना

यह Program stud.txt नाम की File बनाएगा और उसमें User द्वारा Enter किए गए Student Names Save करेगा।

#include <stdio.h>

int main(void)
{
    FILE *fp;
    int ch;

    fp = fopen("stud.txt", "w");

    if (fp == NULL)
    {
        printf("Unable to create file.\n");
        return 1;
    }

    printf("Enter student names.\n");
    printf("Finish input using EOF.\n");

    while ((ch = getchar()) != EOF)
    {
        fputc(ch, fp);
    }

    fclose(fp);

    fp = fopen("stud.txt", "r");

    if (fp == NULL)
    {
        printf("Unable to open file.\n");
        return 1;
    }

    printf("\nContents of stud.txt:\n");

    while ((ch = fgetc(fp)) != EOF)
    {
        putchar(ch);
    }

    fclose(fp);

    return 0;
}
यह Program कैसे काम करता है?
  1. सबसे पहले stud.txt को "w" Mode में Open किया जाता है।
  2. User से Data लिया जाता है।
  3. fputc() की मदद से Data File में Write होता है।
  4. File को Close किया जाता है।
  5. अब उसी File को "r" Mode में Open किया जाता है।
  6. fgetc() की मदद से Data Read किया जाता है।
  7. putchar() उसे Screen पर दिखाता है।
  8. अंत में File फिर Close कर दी जाती है।

Example 2: File में Uppercase और Lowercase Count करना

यह Program File के अंदर मौजूद Uppercase और Lowercase Letters की संख्या Count करेगा।

#include <stdio.h>

int main(void)
{
    FILE *fp;
    int ch;
    int uppercase = 0;
    int lowercase = 0;

    fp = fopen("stud.txt", "r");

    if (fp == NULL)
    {
        printf("File does not exist or cannot be opened.\n");
        return 1;
    }

    while ((ch = fgetc(fp)) != EOF)
    {
        putchar(ch);

        if (ch >= 'A' && ch <= 'Z')
        {
            uppercase++;
        }
        else if (ch >= 'a' && ch <= 'z')
        {
            lowercase++;
        }
    }

    printf("\n\nTotal uppercase letters = %d\n", uppercase);
    printf("Total lowercase letters = %d\n", lowercase);

    fclose(fp);

    return 0;
}

यहाँ Program File को Character by Character Read करता है और हर Letter को Check करके उसका Count बढ़ाता है।

Example 3: एक File को दूसरी File में Copy करना

File Handling का इस्तेमाल File Copy करने के लिए भी किया जा सकता है।

#include <stdio.h>

int main(void)
{
    FILE *source;
    FILE *destination;
    int ch;

    source = fopen("stud.txt", "r");

    if (source == NULL)
    {
        printf("Source file cannot be opened.\n");
        return 1;
    }

    destination = fopen("copy.txt", "w");

    if (destination == NULL)
    {
        printf("Destination file cannot be created.\n");
        fclose(source);
        return 1;
    }

    while ((ch = fgetc(source)) != EOF)
    {
        fputc(ch, destination);
    }

    fclose(source);
    fclose(destination);

    printf("File copied successfully.\n");

    return 0;
}
इसमें क्या हो रहा है?
  • source → पहली File को Point करता है।
  • destination → दूसरी File को Point करता है।
  • fgetc() → Source File से Data Read करता है।
  • fputc() → वही Data दूसरी File में Write करता है।

इस तरह एक File का Content दूसरी File में Copy हो जाता है।

Example 4: Even और Odd Numbers को अलग-अलग Files में Save करना

इस Program में Numbers को Read करके Even और Odd Numbers को अलग-अलग Files में Save किया जाएगा।

#include <stdio.h>

int main(void)
{
    FILE *input;
    FILE *evenFile;
    FILE *oddFile;
    int number;

    input = fopen("numbers.txt", "w");

    if (input == NULL)
    {
        printf("Unable to create numbers.txt\n");
        return 1;
    }

    printf("Enter numbers (enter 0 to stop):\n");

    while (1)
    {
        scanf("%d", &number);

        if (number == 0)
        {
            break;
        }

        fprintf(input, "%d\n", number);
    }

    fclose(input);

    input = fopen("numbers.txt", "r");
    evenFile = fopen("even.txt", "w");
    oddFile = fopen("odd.txt", "w");

    if (input == NULL || evenFile == NULL || oddFile == NULL)
    {
        printf("Error opening files.\n");

        if (input != NULL)
            fclose(input);

        if (evenFile != NULL)
            fclose(evenFile);

        if (oddFile != NULL)
            fclose(oddFile);

        return 1;
    }

    while (fscanf(input, "%d", &number) == 1)
    {
        if (number % 2 == 0)
        {
            fprintf(evenFile, "%d\n", number);
        }
        else
        {
            fprintf(oddFile, "%d\n", number);
        }
    }

    fclose(input);
    fclose(evenFile);
    fclose(oddFile);

    printf("Even and odd numbers have been stored successfully.\n");

    return 0;
}

इस Program में fprintf() और fscanf() का इस्तेमाल किया गया है, जिससे Numbers को Text File में आसानी से Store और Read किया जा सकता है।

File Handling का इस्तेमाल Structure के साथ भी किया जा सकता है।

मान लीजिए हमें Student की तीन Details Save करनी हैं:

  • Roll Number
  • Name
  • Marks

इसके लिए Structure बना सकते हैं:

struct Student
{
    int roll;
    char name[50];
    float marks;
};

अब इस Structure के Data को File में Store किया जा सकता है।

Example 5: Student Records Save और Display करना

#include <stdio.h>

struct Student
{
    int roll;
    char name[50];
    float marks;
};

int main(void)
{
    FILE *fp;
    struct Student student;
    int i;

    fp = fopen("student_records.txt", "w");

    if (fp == NULL)
    {
        printf("Unable to create file.\n");
        return 1;
    }

    for (i = 1; i <= 5; i++)
    {
        printf("\nEnter details of Student %d\n", i);

        printf("Roll Number: ");
        scanf("%d", &student.roll);

        printf("Name: ");
        scanf("%49s", student.name);

        printf("Marks: ");
        scanf("%f", &student.marks);

        fprintf(fp, "%d %s %.2f\n",
                student.roll,
                student.name,
                student.marks);
    }

    fclose(fp);

    fp = fopen("student_records.txt", "r");

    if (fp == NULL)
    {
        printf("Unable to open file.\n");
        return 1;
    }

    printf("\n--- Student Records ---\n");

    while (fscanf(fp, "%d %49s %f",
                  &student.roll,
                  student.name,
                  &student.marks) == 3)
    {
        printf("\nRoll Number: %d", student.roll);
        printf("\nName: %s", student.name);
        printf("\nMarks: %.2f\n", student.marks);
    }

    fclose(fp);

    return 0;
}

यहाँ Student की Details पहले File में Save की जाती हैं और बाद में उसी File से Read करके Screen पर दिखाई जाती हैं।

Sequential Access का मतलब है File के Data को सामान्यतः शुरुआत से आगे की तरफ पढ़ना।

उदाहरण के लिए:

Record 1 → Record 2 → Record 3 → Record 4 → Record 5

अगर हमें पाँचवें Record तक पहुँचना है, तो सामान्य Sequential Reading में पहले के Records को भी Process करना पड़ सकता है।

इसके लिए fgetc() और fscanf() जैसे Functions का इस्तेमाल किया जा सकता है।

Random Access में हम File की किसी Specific Position पर जा सकते हैं।

इसके लिए मुख्य Functions हैं:

  • fseek()
  • ftell()
  • rewind()

यह तब useful होता है जब हमें पूरी File को शुरुआत से Read किए बिना किसी particular location पर जाना हो।

fseek() Function

fseek() File की Current Position को Change करता है।

Syntax
fseek(fp, offset, origin);

यहाँ:

  • fp → File Pointer
  • offset → कितने bytes आगे या पीछे जाना है
  • origin → Position कहाँ से Calculate करनी है

Common values:

SEEK_SET
SEEK_CUR
SEEK_END

इनका मतलब:

Constantमतलब
SEEK_SETFile की शुरुआत
SEEK_CURCurrent Position
SEEK_ENDFile का End

Example:

fseek(fp, 50L, SEEK_SET);

यह File की शुरुआत से 50 bytes के Offset पर जाने की कोशिश करता है।

ftell() Function

ftell() हमें बताता है कि File Pointer इस समय किस Position पर है।

Example
long position;

position = ftell(fp);

printf("Current position: %ld\n", position);

इससे Current File Position मिल जाती है।

rewind() Function

rewind() File Pointer को वापस File की शुरुआत में ले जाता है।

Syntax
rewind(fp);

इसके बाद File को फिर से शुरुआत से Read किया जा सकता है।

C Programming में मुख्य रूप से दो तरह की Files के साथ काम किया जाता है:

  1. Text File
  2. Binary File

Text File

Text File में Data आमतौर पर ऐसे Format में होता है जिसे हम Text Editor से पढ़ सकते हैं।

Examples:

students.txt
data.txt
employees.csv

Text Files के लिए ये Functions commonly इस्तेमाल होते हैं:

fprintf()
fscanf()
fgetc()
fputc()

Binary File

Binary File में Data Bytes के रूप में Store होता है। इसे सामान्य Text Editor में आसानी से समझना मुश्किल होता है।

Binary Data के लिए मुख्य Functions हैं:

fread()
fwrite()

Example:

fwrite(&student, sizeof(student), 1, fp);

और Data Read करने के लिए:

fread(&student, sizeof(student), 1, fp);

Binary Files का इस्तेमाल Structures या दूसरे Binary Data को Store करने के लिए किया जा सकता है।

#include <stdio.h>

struct Student
{
    int roll;
    char name[50];
    float marks;
};

int main(void)
{
    FILE *fp;
    struct Student student = {101, "Zain", 85.5};

    fp = fopen("student.dat", "wb");

    if (fp == NULL)
    {
        printf("Unable to create file.\n");
        return 1;
    }

    fwrite(&student, sizeof(student), 1, fp);

    fclose(fp);

    printf("Student record stored successfully.\n");

    return 0;
}

इस Example में fwrite() Structure के Data को Binary File में Store करता है।

C में File Handling करते समय इन बातों को जरूर याद रखें:

  1. <stdio.h> Header File Include करें।
  2. File Pointer के लिए FILE * का इस्तेमाल करें।
  3. File Open करने के लिए fopen() इस्तेमाल करें।
  4. fopen() के बाद NULL Check करें।
  5. सही File Mode Select करें।
  6. Character के लिए fgetc() और fputc() इस्तेमाल करें।
  7. Formatted Text Data के लिए fprintf() और fscanf() इस्तेमाल करें।
  8. Binary Data के लिए fread() और fwrite() इस्तेमाल करें।
  9. काम पूरा होने के बाद fclose() जरूर करें।
  10. File Position Control करने के लिए fseek(), ftell() और rewind() का इस्तेमाल करें।
  11. fgetc() के Result को Store करने के लिए सामान्यतः int इस्तेमाल करें।
  12. "w" Mode का इस्तेमाल सावधानी से करें क्योंकि इससे Existing File का Data Overwrite हो सकता है।

1. fclosed() लिखना

गलत:

fclosed(fp);

सही:

fclose(fp);

2. fopen() का Result Check न करना

हमेशा Check करें:

if (fp == NULL)
{
    printf("Unable to open file.\n");
}

3. fgetc() के लिए char इस्तेमाल करना

ऐसा करने से EOF को सही तरीके से Handle करने में समस्या हो सकती है।

Better:

int ch;

while ((ch = fgetc(fp)) != EOF)
{
    putchar(ch);
}

4. File Close करना भूल जाना

काम पूरा होने के बाद:

fclose(fp);

जरूर करें।

5. "w" Mode से Existing Data हट जाना

अगर आप:

fopen("data.txt", "w");

करते हैं, तो Existing File का Content Overwrite हो सकता है।

अगर आपको पुराने Data के बाद नया Data Add करना है, तो:

fopen("data.txt", "a");

का इस्तेमाल करें।

Normal VariableFile
Temporary Data रखने के लिए usefulData को लंबे समय तक Store करने के लिए useful
Program के दौरान Data उपलब्ध रहता हैProgram बंद होने के बाद भी Data रखा जा सकता है
छोटे Calculations के लिए usefulRecords और बड़े Data के लिए useful
Program Memory का इस्तेमाल करता हैStorage Device पर Data Save होता है
Program खत्म होने पर Data खो सकता हैFile में Save Data बाद में फिर Read किया जा सकता है

File Handling केवल C Programming का एक Topic नहीं है। इसका Concept ऐसे कई Software में देखने को मिलता है जहाँ Data को Save करके बाद में इस्तेमाल करना होता है।

उदाहरण:

  • 🎓 Student Management System
  • 👨‍💼 Employee Records
  • 📚 Library Management System
  • 🧾 Billing Software
  • 🛒 Inventory Management
  • 🏦 Banking Applications
  • 👥 Customer Records
  • 📊 Result Management System
  • 📝 Log Files
  • ⚙️ Configuration Files
  • 📥 Data Import और Export

मान लीजिए किसी School Software में 1,000 Students का Record है। अगर यह Data केवल Variables में रखा जाए, तो Program बंद होने के बाद इसे दोबारा नहीं पाया जा सकेगा। File में Save करने पर वही Records बाद में फिर से Read किए जा सकते हैं।

यही वजह है कि File Handling real-world applications के लिए बहुत useful concept है।

File Handling क्या है?

File Handling का मतलब है C Programming में File को Create, Open, Read, Write, Update और Close करना।

C में File Handling के लिए कौन-सी Header File इस्तेमाल होती है?

इसके लिए मुख्य रूप से:

#include <stdio.h>

का इस्तेमाल किया जाता है।

File Pointer क्या होता है?

File Pointer एक FILE * Pointer होता है, जिसका इस्तेमाल Opened File के साथ काम करने के लिए किया जाता है।

Example:

FILE *fp;

fopen() का क्या काम है?

fopen() File को Open करता है और selected Mode के अनुसार नई File भी Create कर सकता है।

fclose() का क्या काम है?

fclose() Opened File को Close करता है और उससे जुड़े Resources Release करने में मदद करता है।

r, w और a में क्या अंतर है?

  • r → File को Read करना
  • w → File में Write करना; Existing Content Overwrite हो सकता है
  • a → File के End में नया Data Add करना

Random Access क्या है?

Random Access में File की किसी Specific Position पर जाने की सुविधा होती है। इसके लिए fseek() जैसे Functions का इस्तेमाल किया जाता है।

Random Access के लिए कौन-से Functions इस्तेमाल होते हैं?

मुख्य Functions हैं:

fseek()
ftell()
rewind()

File Handling in C सीखना इसलिए जरूरी है क्योंकि इससे हमारा Program Data को केवल Temporary रूप से Process करने के बजाय उसे File में Save करके बाद में फिर से इस्तेमाल कर सकता है।

इस Tutorial में हमने File Pointer, fopen(), fclose(), File Modes, fgetc(), fputc(), fprintf(), fscanf(), fseek(), ftell(), rewind(), Text Files और Binary Files के बारे में समझा।

अगर आप C Programming सीख रहे हैं, तो File Handling के Concepts को अच्छे से समझने के बाद आप Student Management System, Billing Software, Employee Records और Inventory जैसे practical programs आसानी से बनाना शुरू कर सकते हैं।

सबसे पहले fopen() और File Modes को समझें, फिर fgetc(), fputc(), fprintf() और fscanf() पर practice करें। इसके बाद fseek() और Binary File Handling जैसे advanced concepts सीखें।

Leave a Comment

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *

Scroll to Top