C भाषा फाइल अपरेसन पूर्ण गाइड | आधारभूतदेखि उन्नतसम्म

目次

1. परिचय

C भाषा प्रोग्रामिङको आधार सिक्न अत्यन्त महत्वपूर्ण भाषा हो र धेरै परिस्थितिहरूमा प्रयोग गरिन्छ। त्यसमा पनि 「फाइल सिर्जना」 प्रोग्रामले बाह्य डेटा ह्यान्डल गर्ने क्रममा अपरिहार्य आधारभूत प्रविधिहरूमध्ये एक हो। यस लेखमा, C भाषामा फाइल अपरेसन, विशेष गरी फाइल सिर्जनामा केन्द्रित गरी, शुरुआतीहरूलाई पनि बुझ्न सजिलो रूपमा व्याख्या गर्नेछौं।

फाइल अपरेसनको महत्व

प्रोग्राम चलाएर प्राप्त डेटा सुरक्षित गर्न वा बाह्य इनपुट डेटा प्रयोग गर्नको लागि फाइल अपरेसन आवश्यक पर्छ। उदाहरणका लागि, तलका जस्ता परिस्थितिहरूमा फाइल अपरेसन उपयोगी हुन्छ।

  • लग डेटा सुरक्षित गर्नु
    प्रोग्रामको कार्य रेकर्ड वा त्रुटि जानकारीलाई रेकर्ड गरेर पछि विश्लेषण गर्न सकिन्छ।
  • सेटिङ फाइलको व्यवस्थापन
    प्रयोगकर्ताले परिवर्तन गर्न सक्ने सेटिङलाई बाह्य फाइलमा सुरक्षित गरी, प्रोग्राम सुरु हुँदा पढिन्छ।
  • डेटाबेस जस्तै प्रयोग
    सानो आकारको डेटा सुरक्षित र व्यवस्थापन फाइलमार्फत गरिन्छ।

यी अनुप्रयोग उदाहरणहरू वास्तविक प्रोग्राम विकासमा बारम्बार आवश्यक पर्छ। C भाषामा फाइल सिर्जना सिकेर, प्रोग्रामको उपयोगिता उल्लेखनीय रूपमा सुधार हुनेछ।

यस लेखको उद्देश्य

यस लेखको उद्देश्य भनेको C भाषा प्रयोग गरेर 「फाइल कसरी सिर्जना गर्ने」 पहिलो पटक सिक्ने पाठकहरूले आधारभूत फाइल अपरेसन बुझेर, आफैं कोड लेखी चलाउन सक्ने बनाउनु हो। साथै, त्रुटि ह्यान्डलिङ र अनुप्रयोग उदाहरणहरूलाई पनि समेटेर, व्यावहारिक कार्यजस्तै सीप हासिल गर्न लक्ष्य राखिएको छ।

लक्षित पाठकहरू

यो लेख तलका प्रकारका व्यक्तिहरूलाई लक्षित गर्दछ।

  • C भाषा सिक्न थाल्ने शुरुआती
  • फाइल अपरेसनको आधार बुझ्न चाहने व्यक्ति
  • प्रोग्राममा डेटा सुरक्षित र पढ्ने/लेख्ने आवश्यक परिस्थितीलाई कल्पना गर्ने व्यक्ति

2. फाइल सञ्चालनको आधारभूत अवधारणा

C भाषा मा फाइल सञ्चालन गर्नको लागि, पहिले फाइलको आधारभूत अवधारणा बुझ्न आवश्यक छ। यस खण्डमा, “फाइल भनेको के हो”, “टेक्स्ट फाइल र बाइनरी फाइलको भिन्नता”, “C भाषा मा फाइल सञ्चालन गर्दा आवश्यक तयारी” बारे व्याख्या गर्नेछौं।

फाइल भनेको के हो

फाइल भनेको डेटा रेकर्ड गर्नको लागि एउटा बक्स जस्तै हो। प्रोग्राम चलाउँदा, बाह्यमा डेटा सुरक्षित गर्न वा प्रोग्रामलाई आवश्यक जानकारी बाहिरबाट पढ्न प्रयोग गरिन्छ। फाइलहरू मुख्यतया तलका दुई प्रकारमा विभाजन गरिन्छ।

  1. टेक्स्ट फाइल
  • मानवले सजिलै पढ्न सक्ने ढाँचामा डेटा रेकर्ड गर्ने फाइल हो।
  • उदाहरण: .txt.csv आदि।
  • टेक्स्ट फाइलमा अक्षर, अंक, चिन्हहरूलाई पङ्क्ति अनुसार सुरक्षित गर्न सकिन्छ।
  1. बाइनरी फाइल
  • कम्प्युटरले सजिलै प्रक्रिया गर्न सक्ने ढाँचामा डेटा रेकर्ड गर्ने फाइल हो।
  • उदाहरण: .bin.dat、इमेज फाइलहरू (उदाहरण: .jpg, .png) आदि।
  • बाइनरी फाइलमा अक्षर मात्र नभई अंक, इमेज डेटा आदि विभिन्न प्रकारको जानकारी सुरक्षित हुन्छ।

टेक्स्ट फाइल र बाइनरी फाइलको भिन्नता

विशेषताटेक्स्ट फाइलबाइनरी फाइल
डेटा ढाँचामानवले पढ्न सक्ने ढाँचा (ASCII वा UTF-8 आदि)कम्प्युटरका लागि ढाँचा
उपयोगसेटिङ फाइल, लग डेटा आदिइमेज, अडियो, डाटाबेस आदि
आकारसामान्यतया ठूलो हुन्छअझ कम्प्याक्ट रूपमा सुरक्षित गर्न सकिन्छ
सञ्चालनको सजिलोपनएडिटरमा सजिलै खोल्न सकिन्छविशिष्ट प्रोग्रामद्वारा मात्र पढ्न/लेख्न सम्भव

बिन्दु: शुरुआती विद्यार्थीहरूले C भाषा सिक्दा, पहिले टेक्स्ट फाइलको सञ्चालन सिक्नुपर्छ, त्यसपछि बाइनरी फाइलको सञ्चालनमा जानु राम्रो हुन्छ।

C भाषा मा फाइल सञ्चालनको लागि आवश्यक तयारी

C भाषामा, मानक लाइब्रेरी प्रयोग गरेर फाइल सञ्चालन गरिन्छ। तलको तयारी आवश्यक छ।

मानक हेडर फाइल <stdio.h>

C भाषामा फाइल सञ्चालन गर्न आवश्यक हेडर फाइल हो। यस हेडर फाइलमा फाइल सञ्चालनका लागि प्रयोग हुने फलनहरू समावेश छन्। मुख्य फलनहरू तलका अनुसार छन्।

  • fopen: फाइल खोल्ने।
  • fclose: फाइल बन्द गर्ने।
  • fprintf: फाइलमा लेख्ने।
  • fscanf: फाइलबाट पढ्ने।
  • fread / fwrite: बाइनरी डेटा सञ्चालन गर्ने।

फाइल पोइन्टर

C भाषामा फाइल सञ्चालन गर्दा “फाइल पोइन्टर” नामक विशेष भेरिएबल प्रयोग गरिन्छ। फाइल पोइन्टरलाई FILE प्रकारमा परिभाषित गरिन्छ।

FILE *fp;

यो फाइल पोइन्टर प्रयोग गरेर, फाइल खोल्न वा डेटा पढ्न/लेख्न गर्न सकिन्छ।

फाइल मोड

फाइल सञ्चालन गर्दा, अनिवार्य रूपमा मोड निर्दिष्ट गर्नुपर्छ। मोडले फाइललाई कसरी व्यवहार गर्ने (पढ्ने मात्र, लेख्ने मात्र आदि) निर्धारण गर्छ। तल मुख्य मोडहरू सारांशित गरिएको छ।

मोडउपयोग
"r"पढ्ने मात्र (फाइल अवश्यै अस्तित्वमा हुनुपर्छ)
"w"लेख्ने मात्र (अवस्थित डेटा ओभरराइट हुन्छ)
"a"एपेन्ड मात्र (अवस्थित डेटा राखेर थपिन्छ)
"r+"पढ्ने र लेख्ने
"w+"पढ्ने र लेख्ने (अवस्थित डेटा ओभरराइट हुन्छ)
"a+"पढ्ने र एपेन्ड

सारांश

यस खण्डमा, फाइलको आधारभूत अवधारणा, प्रकारहरू, र C भाषामा फाइल सञ्चालनको लागि आवश्यक तयारी बारे व्याख्या गरियो।

3. फाइलको खोल्ने र बन्द गर्ने

C भाषा मा फाइललाई सञ्चालन गर्ने पहिलो चरण “फाइल खोल्नु” हो। फाइललाई सही तरिकाले खोल्दा, डेटा पढ्ने/लेख्ने र सम्पादन गर्न सकिन्छ। साथै, प्रयोग गरिएको फाइल अनिवार्य रूपमा बन्द गर्नुपर्छ। यस भागमा, फाइलको खोल्ने र बन्द गर्ने विधिहरूलाई विशिष्ट उदाहरणहरू सहित व्याख्या गरिन्छ।

फाइल खोल्ने: fopen फङ्क्शन

C भाषामा, fopen फङ्क्शन प्रयोग गरेर फाइल खोलिन्छ। यो फङ्क्शन तलको जस्तै लेखिन्छ।

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

आर्गुमेन्टको विवरण

  • filename: फाइलनामलाई स्ट्रिङ्गको रूपमा निर्दिष्ट गर्नुहोस्। उदाहरण: "example.txt"
  • mode: फाइललाई कसरी ह्यान्डल गर्ने मोड निर्दिष्ट गर्दछ। उदाहरण: "r"(पढ्ने मात्र)、"w"(लेख्ने मात्र)जस्ता।

रिटर्न मान

  • फाइललाई सही तरिकाले खोल्न सकेमा, FILE प्रकारको पोइन्टर फिर्ता गरिन्छ।
  • फाइल खोल्न नसकेमा, NULL फिर्ता हुन्छ। यस अवस्थामा, त्रुटि ह्यान्डलिंग आवश्यक छ।

मूलभूत प्रयोग उदाहरण: फाइल खोल्ने

तलको उदाहरणले, example.txt नामको फाइललाई पढ्ने मात्र मोडमा खोल्ने प्रोग्राम हो।

#include <stdio.h>

int main() {
    FILE *file;

    // फाइल खोल्ने
    file = fopen("example.txt", "r");

    // फाइल खोल्न सकेको हो कि छैन जाँच गर्नुहोस्
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन。\n");
        return 1;
    }

    printf("फाइल सफलतापूर्वक खुल्यो。\n");

    // फाइल बन्द गर्ने
    fclose(file);

    return 0;
}

बिन्दु:

  • फाइललाई सही तरिकाले खोल्न नसकेमा, त्रुटि सन्देश देखाइन्छ र प्रोग्राम समाप्त गरिन्छ।
  • फाइल सञ्चालन समाप्त भएपछि, अनिवार्य रूपमा fclose फङ्क्शनले फाइल बन्द गर्नुहोस्।

फाइल मोडका प्रकारहरू

फाइल खोल्दा प्रयोग हुने मोड अनुसार सञ्चालनको प्रकार फरक हुन्छ। तल सामान्यतया प्रयोग हुने मोडहरूको सूची दिइएको छ।

मोडउपयोग
"r"पढ्ने मात्र(फाइल अवश्य अस्तित्वमा हुनुपर्छ)
"w"लेख्ने मात्र(अवस्थित फाइल भएमा, सामग्री मेटाइन्छ)
"a"एन्डमा थप्ने मात्र(अवस्थित फाइल भएमा, अन्त्यमा डेटा थपिन्छ)
"r+"पढ्ने र लेख्ने(अवस्थित फाइलको सामग्री राखिन्छ)
"w+"पढ्ने र लेख्ने(अवस्थित फाइलको सामग्री मेटाइन्छ)
"a+"पढ्ने र एन्डमा थप्ने(नयाँ डेटा अन्त्यमा थप्दै, सामग्री पनि पढ्न सकिन्छ)

फाइल बन्द गर्ने: fclose फङ्क्शन

फाइल खोलिसकेपछि, प्रयोग समाप्त भएपछि अनिवार्य रूपमा fclose फङ्क्शनलाई कल गरेर फाइल बन्द गर्नुपर्छ। यदि यो नगरेमा, तलका जस्ता समस्याहरू उत्पन्न हुन सक्छन्।

  • मेमोरी लीक(फाइल पोइन्टर मुक्त गरिँदैन)
  • डेटा लेखन पूरा हुँदैन
  • प्रणाली स्रोतको बर्बादी

मूलभूत संरचना

int fclose(FILE *stream);

रिटर्न मान

  • फाइललाई सामान्य रूपमा बन्द गरेमा 0 फिर्ता हुन्छ।
  • त्रुटि आएमा EOF फिर्ता हुन्छ।

उदाहरण: फाइल बन्द गर्ने

तलको प्रोग्रामले फाइल बन्द गर्ने उदाहरण देखाउँछ।

#include <stdio.h>

int main() {
    FILE *file;

    // फाइल खोल्नुहोस्
    file = fopen("example.txt", "r");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन।
");
        return 1;
    }

    // फाइल सञ्चालन (छोडिएको)

    // फाइल बन्द गर्नुहोस्
    if (fclose(file) == 0) {
        printf("फाइल सफलतापूर्वक बन्द भयो।
");
    } else {
        printf("फाइल बन्द गर्दा त्रुटि भयो।
");
    }

    return 0;
}

बिन्दु:

  • fclose फङ्क्शनको रिटर्न मान जाँच गरेर, फाइल सामान्य रूपमा बन्द भएको हो कि छैन भन्ने निर्धारण गर्न सकिन्छ।

त्रुटि जाँचको महत्त्व

फाइल खोल्दा वा बन्द गर्दा त्रुटि हुन सक्छ। तलका जस्ता अवस्थामा, त्रुटि ह्यान्डलिंग थपेर प्रोग्रामको विश्वसनीयता बढाउन सकिन्छ।

मुख्य त्रुटि कारणहरू

  • निर्दिष्ट फाइल अवस्थित छैन("r" मोडको अवस्थामा)
  • लेख्ने अधिकार छैन
  • फाइलनाम गलत छ

त्रुटि ह्यान्डलिंगको उदाहरण

if (file == NULL) {
    perror("फाइल खोल्ने त्रुटि");
    return 1;
}

perror फङ्क्शन प्रयोग गरेर, त्रुटिको कारण मानक आउटपुटमा देखाउन सकिन्छ।

सारांश

  • fopen फङ्क्शन प्रयोग गरेर फाइल खोल्नुहोस्, र fclose फङ्क्शनले फाइल बन्द गर्नुहोस्।
  • फाइल मोडलाई सही रूपमा निर्दिष्ट गरी, सञ्चालनको प्रकार अनुसार मोड चयन गर्नुहोस्।
  • त्रुटि ह्यान्डलिंग थपेर, फाइल सञ्चालनको सुरक्षा र विश्वसनीयता बढाऔं।

4. फाइलमा लेख्ने

C भाषा मा फाइल अपरेसन गर्दा, डेटा लेख्ने विधि अत्यन्त महत्वपूर्ण छ। यस खण्डमा, fprintf, fputs, fputc जस्ता फलनहरू प्रयोग गरेर फाइलमा डेटा लेख्ने तरिका व्याख्या गरिन्छ। साथै, विशिष्ट नमुना कोड मार्फत वास्तविक प्रयोग सिक्न सकिन्छ।

फाइल लेख्नेको आधारभूत

फाइलमा डेटा लेख्नका लागि, तलका चरणहरू पालना गर्न आवश्यक छ।

  1. फाइल खोल्नुहोस् (fopen फलन प्रयोग गरेर)
    लेखन गर्न चाहनुहुन्छ भने, मोडमा "w" (लेखन-एक्लै) वा "a" (जोड्ने-एक्लै) निर्दिष्ट गर्नुहोस्।
  2. लेखन फलन प्रयोग गरेर डेटा फाइलमा बचत गर्नुहोस्।
  3. लेखन समाप्त भएपछि, fclose फलन प्रयोग गरेर फाइल बन्द गर्नुहोस्।

लेखन फलनका प्रकारहरू

C भाषामा, प्रयोजन अनुसार तलका लेखन फलनहरू प्रयोग गरिन्छ।

1. fprintf फलन

fprintf फलन फर्म्याट गरिएको डेटा फाइलमा लेख्न प्रयोग गरिन्छ।

संरचना

int fprintf(FILE *stream, const char *format, ...);
  • stream: लेखन गन्तव्य फाइल पोइन्टर।
  • format: फर्म्याट निर्दिष्ट स्ट्रिङ (उदाहरण: %d, %s आदि)।
  • फिर्ती मान: सफलतापूर्वक लेखिएको क्यारेक्टर संख्या फिर्ता गर्छ।

उदाहरण: फर्म्याट गरिएको डेटा लेखन

#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "w");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन。
");
        return 1;
    }

    fprintf(file, "नाम: %snउमेर: %dn", "यामादा तारो", 25);
    fclose(file);

    printf("डेटा सफलतापूर्वक लेखिएको छ。
");
    return 0;
}

2. fputs फलन

fputs फलन स्ट्रिङलाई सोझै फाइलमा लेख्न प्रयोग गरिन्छ।

संरचना

int fputs(const char *str, FILE *stream);
  • str: लेख्ने स्ट्रिङ।
  • stream: लेखन गन्तव्य फाइल पोइन्टर।
  • फिर्ती मान: सफल भएमा 0 बाहेकको मान, असफल भएमा EOF फिर्ता गर्छ।

उदाहरण: स्ट्रिङ लेखन

#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "w");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन।\n");
        return 1;
    }

    fputs("नमस्ते, संसार!n", file);
    fclose(file);

    printf("स्ट्रिङ सफलतापूर्वक लेखियो。\n");
    return 0;
}

3. fputc फलन

fputc फलन 1 क्यारेक्टर हरेक पटक फाइलमा लेख्न प्रयोग गरिन्छ।

संरचना

int fputc(int char, FILE *stream);
  • char: लेख्ने क्यारेक्टर (ASCII मानको रूपमा निर्दिष्ट)।
  • stream: लेखन गन्तव्य फाइल पोइन्टर।
  • फिर्ती मान: सफल भएमा लेखिएको क्यारेक्टर, असफल भएमा EOF फिर्ता गर्छ।

उदाहरण: 1 क्यारेक्टर हरेक पटक लेखन

#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "w");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन。
");
        return 1;
    }

    fputc('H', file);
    fputc('e', file);
    fputc('l', file);
    fputc('l', file);
    fputc('o', file);
    fclose(file);

    printf("अक्षरहरू सफलतापूर्वक लेखियो。
");
    return 0;
}

फाइल मोड र लेखन

फाइल मोड अनुसार, डेटा लेखनको व्यवहार फरक हुन्छ।

  1. "w" मोड@@
  • फाइल अवस्थित नभएमा, नयाँ सिर्जना गरिन्छ।
  • फाइल अवस्थित भएमा, मौजुदा डेटा ओभरराइट गरिन्छ।
  1. "a" मोड@@
  • फाइल अवस्थित नभएमा, नयाँ सिर्जना गरिन्छ।
  • फाइल अवस्थित भएमा, मौजुदा डेटा राखिन्छ, र अन्त्यमा नयाँ डेटा थपिन्छ।

ध्यान दिनुहोस्: लेखन त्रुटि प्रक्रिया

फाइल लेखन गर्दा, त्रुटि हुन सक्छ। उदाहरणका लागि, डिस्क क्षमता अभाव वा लेखन अधिकारको कमी कारण हुन सक्छ। त्रुटि प्रक्रिया थपेर, यी समस्याहरूलाई समाधान गर्न सकिन्छ।

त्रुटि प्रक्रिया उदाहरण

if (fprintf(file, "परीक्षण डेटाn") < 0) {
    printf("लेखन गर्दा त्रुटि भयो。
");
}

व्यावहारिक उदाहरण: सरल लग फाइल निर्माण कार्यक्रम

तलको उदाहरणले, लग डेटा फाइलमा बचत गर्ने कार्यक्रम देखाउँछ।

#include <stdio.h>
#include <time.h>

int main() {
    FILE *file = fopen("log.txt", "a");
    if (file == NULL) {
        printf("लॉग फाइल खोल्न सकिएन。
");
        return 1;
    }

    time_t now = time(NULL);
    fprintf(file, "लॉग रेकर्ड: %s", ctime(&now));

    fclose(file);
    printf("लॉग सफलतापूर्वक रेकर्ड गरियो。
");
    return 0;
}

सारांश

  • फाइलमा लेखनका लागि, fprintf, fputs, fputc जस्ता फलनहरू प्रयोग गरिन्छ।
  • फाइल मोड ("w" वा "a") लाई उपयुक्त रूपमा निर्दिष्ट गरी, उद्देश्य अनुसारको कार्यान्वयन हासिल गर्नुहोस्।
  • त्रुटि प्रक्रिया थपेर, फाइल अपरेसनको सुरक्षा बढाऔं।

5. फाइलबाट पढ्ने

C言語मा फाइल अपरेसन गर्ने बेला, फाइलबाट डेटा पढ्ने विधि पनि आधारभूत कौशल मध्ये एक हो। यस खण्डमा, fscanf, fgets, fgetc जस्ता फलनहरू प्रयोग गरेर डेटा पढ्ने तरिका व्याख्या गरिन्छ। साथै, विशिष्ट उदाहरणहरू मार्फत, वास्तविकमा फाइलबाट डेटा प्राप्त गर्ने तरिका सिकाइन्छ।

फाइल पढ्ने आधारभूत

फाइलबाट डेटा पढ्नको लागि, तलका चरणहरू पालना गर्नुहोस्।

  1. फाइल खोल्ने (fopen फलन प्रयोग गरेर)
    पढ्ने अवस्थामा, मोडलाई "r" (पढ्ने मात्र) मा निर्दिष्ट गर्नुहोस्।
  2. पढ्ने फलन प्रयोग गरेर डेटा प्राप्त गर्नुहोस्।
  3. पढ्ने समाप्त भएपछि, fclose फलन प्रयोग गरेर फाइल बन्द गर्नुहोस्।

पढ्ने फलनका प्रकारहरू

C言語मा, प्रयोजन अनुसार तलका फलनहरू प्रयोग गरेर डेटा पढिन्छ।

1. fscanf फलन

fscanf फलन फाइलबाट स्वरूपित डेटा पढ्ने बेला प्रयोग गरिन्छ।

सिन्ट्याक्स

int fscanf(FILE *stream, const char *format, ...);
  • stream: पढ्ने फाइल पोइन्टर।
  • format: पढ्ने स्वरूप (उदाहरण: %d, %s)。
  • फिर्ती मान: सफलतापूर्वक पढिएका वस्तुहरूको संख्या फिर्ता गर्छ। असफल भएमा EOF फिर्ता हुन्छ।

उदाहरण: स्वरूपित डेटा पढ्ने

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन।\n");
        return 1;
    }

    char name[50];
    int age;

    fscanf(file, "%s %d", name, &age);
    printf("नाम: %s, उमेर: %dn", name, age);

    fclose(file);
    return 0;
}

2. fgets फलन

fgets फलन फाइलबाट एक लाइनमा एक डेटा पढ्न उपयुक्त छ。

सिन्ट्याक्स

char *fgets(char *str, int n, FILE *stream);
  • str: पढिएको डेटा राख्ने एरे।
  • n: पढ्ने अधिकतम क्यारेक्टर संख्या (str को आकार भन्दा कम वा बराबर)。
  • stream: पढ्ने फाइल पोइन्टर।
  • फिर्ती मान: सफल भएमा str फिर्ता गर्छ, असफल वा EOF अवस्थामा NULL फिर्ता गर्छ।

उदाहरण: एक लाइनमा एक डेटा पढ्ने

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन。
");
        return 1;
    }

    char line[100];

    while (fgets(line, sizeof(line), file) != NULL) {
        printf("%s", line);
    }

    fclose(file);
    return 0;
}

3. fgetc फलन

fgetc फलन फाइलबाट एक क्यारेक्टरमा एक डेटा पढ्ने बेला प्रयोग गरिन्छ。

सिन्ट्याक्स

int fgetc(FILE *stream);
  • stream: पढ्ने फाइल पोइन्टर।
  • फिर्ती मान: पढिएको क्यारेक्टर (ASCII मान) फिर्ता गर्छ। असफल वा EOF अवस्थामा EOF फिर्ता हुन्छ।

उदाहरण: एक क्यारेक्टरमा एक डेटा पढ्ने

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन।\n");
        return 1;
    }

    int c;
    while ((c = fgetc(file)) != EOF) {
        putchar(c);
    }

    fclose(file);
    return 0;
}

EOF(End Of File)को ह्यान्डलिंग

EOF फाइलको अन्त्य दर्शाउने विशेष मान हो। पढ्ने फलनले EOF फिर्ता गरेमा, फाइलको अन्त्यमा पुगिएको अर्थ हो。

EOF जाँच गर्ने उदाहरण

int c;
while ((c = fgetc(file)) != EOF) {
    putchar(c);
}

ध्यान दिनु पर्ने बुँदा:

  • EOF सामान्यतया -1 को रूपमा परिभाषित हुन्छ, तर प्रोग्रामभित्र EOF सँग तुलना गर्ने सिफारिस गरिन्छ।

व्यावहारिक उदाहरण: सेटिङ फाइलको पढाइ

तलको उदाहरण सेटिङ फाइल (उदाहरण: config.txt) बाट सेटिङ डेटा पढ्ने प्रोग्राम हो。

config.txt को सामग्री

username admin
password 12345

प्रोग्राम उदाहरण

#include <stdio.h>

int main() {
    FILE *file = fopen("config.txt", "r");
    if (file == NULL) {
        printf("設定ファイルを開けませんでした。
");
        return 1;
    }

    char key[50], value[50];
    while (fscanf(file, "%s %s", key, value) != EOF) {
        printf("%s: %sn", key, value);
    }

    fclose(file);
    return 0;
}

चलाउने नतिजा

username: admin
password: 12345

सारांश

  • फाइलबाट डेटा पढ्नको लागि, fscanf, fgets, fgetc जस्ता फलनहरू प्रयोजन अनुसार प्रयोग गरिन्छ।
  • फाइल पढ्ने बेला, EOF जाँच गरी डेटा सही तरिकाले प्रोसेस गर्नु महत्त्वपूर्ण छ।
  • व्यावहारिक प्रयोगमा, सेटिङ फाइल वा लग फाइलको पढाइमा प्रयोग गर्न सकिन्छ।

6. बाइनरी फाइलको सञ्चालन

C भाषा मा, बाइनरी स्वरूपमा फाइलहरूलाई ह्यान्डल गर्न सकिन्छ। बाइनरी फाइलहरू, टेक्स्ट फाइलहरू भन्दा फरक, मानवका लागि पढ्न गाह्रो स्वरूप हो तर डेटा साइज सानो हुन्छ र द्रुत पढ्ने/लेख्ने सम्भव हुन्छ। यस सेक्सनमा, बाइनरी फाइललाई सञ्चालन गर्ने आधारभूत ज्ञान र विशिष्ट प्रयोग उदाहरणहरू प्रस्तुत गरिन्छ।

बाइनरी फाइल भनेको के हो?

बाइनरी फाइल भनेको डेटा सोही स्वरूपमा सुरक्षित गर्ने फाइल हो। तल बाइनरी फाइलका विशेषताहरू छन्।

  1. दक्ष डेटा भण्डारण
    बाइनरी स्वरूपमा, डेटा सोही रूपमा सुरक्षित हुन्छ, जसले टेक्स्ट स्वरूपभन्दा अधिक दक्षतापूर्वक डेटा भण्डारण गर्न सक्छ।
  2. उच्च बहुपयोगिता
    छवि फाइल, ध्वनि फाइल, सङ्कुचन फाइल आदि विभिन्न स्वरूपमा प्रयोग गरिन्छ।
  3. मानवले पढ्न नसक्ने स्वरूप
    सुरक्षित डेटा सोही रूपमा टेक्स्ट एडिटरमा खोल्दा, अक्षर बिग्रिएको जस्तो देखिन सक्छ।

बाइनरी फाइललाई सञ्चालन गर्ने मुख्य कार्यहरू

C भाषामा, बाइनरी डेटा पढ्न/लेख्नको लागि, fread कार्य र fwrite कार्य प्रयोग गरिन्छ।

1. fread कार्य

fread कार्य बाइनरी डेटा फाइलबाट पढ्ने बेला प्रयोग गरिन्छ।

सिन्ट्याक्स

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
  • ptr: पढिएको डेटा भण्डारण गर्ने पोइन्टर।
  • size: एक डेटा को साइज (बाइटमा)।
  • count: पढिने डेटा को संख्या।
  • stream: पढ्ने फाइल पोइन्टर।

2. fwrite कार्य

fwrite कार्य बाइनरी डेटा फाइलमा लेख्ने बेला प्रयोग गरिन्छ।

सिन्ट्याक्स

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
  • ptr: लेख्ने डेटा संकेत गर्ने पोइन्टर।
  • size: एक डेटा को साइज (बाइटमा)।
  • count: लेख्ने डेटा को संख्या।
  • stream: लेख्ने फाइल पोइन्टर।

बाइनरी मोडमा फाइल खोल्ने

बाइनरी फाइललाई सञ्चालन गर्दा, fopen कार्यको मोडमा "b" समावेश गर्नुपर्छ।

  • "rb": बाइनरी पढ्ने मात्र।
  • "wb": बाइनरी लेख्ने मात्र।
  • "ab": बाइनरी थप लेख्ने मात्र।

उदाहरण: संख्यात्मक डेटा बाइनरी स्वरूपमा सुरक्षित गर्ने

डेटा लेख्ने प्रोग्राम

तल पूर्णांक डेटा बाइनरी स्वरूपमा फाइलमा सुरक्षित गर्ने प्रोग्राम हो।

#include <stdio.h>

int main() {
    FILE *file = fopen("data.bin", "wb");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन。
");
        return 1;
    }

    int numbers[] = {1, 2, 3, 4, 5};
    size_t size = sizeof(numbers) / sizeof(numbers[0]);

    fwrite(numbers, sizeof(int), size, file);

    fclose(file);
    printf("डेटा बाइनरी ढाँचामा सुरक्षित गरियो。
");
    return 0;
}

डेटा पढ्ने प्रोग्राम

उपरोक्त सुरक्षित बाइनरी डेटा पढ्ने प्रोग्राम तल देखाइएको छ।

#include <stdio.h>

int main() {
    FILE *file = fopen("data.bin", "rb");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन。
");
        return 1;
    }

    int numbers[5];
    fread(numbers, sizeof(int), 5, file);

    printf("लोड गरिएको डेटा: ");
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }

    fclose(file);
    return 0;
}

कार्यक्रम परिणाम

लोड गरिएको डेटा: 1 2 3 4 5

बाइनरी फाइल सञ्चालनका ध्यान दिनुपर्ने बुँदाहरू

  1. डेटा साइजको मिलान
    freadfwrite प्रयोग गर्दा, सही साइज निर्दिष्ट गर्नु महत्त्वपूर्ण छ। गलत साइज निर्दिष्ट गर्दा, डेटा पढ्ने/लेख्नेमा असफल हुन्छ।
  2. त्रुटि जाँच
    फाइल सञ्चालनको क्रममा त्रुटि आएमा, ferror कार्य प्रयोग गरेर त्रुटि स्थिती जाँच गर्न सकिन्छ।
  3. डेटाको पोर्टेबिलिटी
    बाइनरी स्वरूपमा सुरक्षित फाइलहरू विभिन्न प्लेटफर्महरू बीच अनुकूलता नहुन सक्छ। विशेष गरी एन्डियन (बिग एन्डियन र लिट्ल एन्डियन) को भिन्नतामा ध्यान दिनु आवश्यक छ।

व्यावहारिक उदाहरण: संरचना डेटा सुरक्षित र पढ्ने

संरचना सुरक्षित गर्ने प्रोग्राम

तल संरचना डेटा बाइनरी स्वरूपमा सुरक्षित गर्ने उदाहरण हो।

#include <stdio.h>

typedef struct {
    char name[50];
    int age;
    float salary;
} Employee;

int main() {
    FILE *file = fopen("employee.bin", "wb");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन。\n");
        return 1;
    }

    Employee emp = {"यामादा तारो", 30, 450000.0};
    fwrite(&emp, sizeof(Employee), 1, file);

    fclose(file);
    printf("कर्मचारी डेटा सुरक्षित गरियो。\n");
    return 0;
}

संरचना पढ्ने प्रोग्राम

सुरक्षित संरचना डेटा पढ्ने प्रोग्राम तल देखाइएको छ।

#include <stdio.h>

typedef struct {
    char name[50];
    int age;
    float salary;
} Employee;

int main() {
    FILE *file = fopen("employee.bin", "rb");
    if (file == NULL) {
        printf("फाइल खोल्न सकिएन।\n");
        return 1;
    }

    Employee emp;
    fread(&emp, sizeof(Employee), 1, file);

    printf("नाम: %snउमेर: %dnवेतन: %.2fn", emp.name, emp.age, emp.salary);

    fclose(file);
    return 0;
}

कार्यक्रम परिणाम

नाम: यामादा तारो
उमेर: 30
वेतन: 450000.00

सारांश

  • बाइनरी फाइलले डेटा दक्षतापूर्वक सुरक्षित गर्न सक्छ, र freadfwrite प्रयोग गरेर सञ्चालन गरिन्छ।
  • फाइल मोडमा "b" निर्दिष्ट गरेर बाइनरी मोडमा फाइल खोल्नुहोस्।
  • डेटा साइज र त्रुटि जाँचमा ध्यान दिनुहोस्, र सही फाइल सञ्चालन गर्नुहोस्।

7. एरर ह्यान्डलिङ

फाइल अपरेसन गर्दा, त्रुटिहरू अपरिहार्य हुन्छन्।C भाषा मा, त्रुटि उत्पन्न भएमा उपयुक्त रूपमा समाधान गरेर, प्रोग्रामको विश्वसनीयता र स्थिरता सुधार गर्न सकिन्छ।यस भागमा, फाइल अपरेसनमा प्रायः देखिने त्रुटिहरू र तिनीहरूलाई कसरी पत्ता लगाउने र समाधान गर्ने बारे व्याख्या गरिन्छ।

फाइल अपरेसनमा उत्पन्न हुने मुख्य त्रुटिहरू

तल C भाषा मा फाइल अपरेसन गर्दा उत्पन्न हुन सक्ने सामान्य त्रुटिहरूको सूची छ।

  1. फाइल खोल्न सकिँदैन
  • कारण: फाइल अस्तित्वमा छैन, पथ गलत छ, वा अनुमति छैन।
  • समाधान: fopen को फर्किने मान जाँच गरेर त्रुटि ह्यान्डल गर्नुहोस्।
  1. लेखन वा पढाइ त्रुटि
  • कारण: डिस्क क्षमताको कमी वा फाइल पढाइ-मात्र छ।
  • समाधान: लेखन-पढाइ सञ्चालन पछि त्रुटि जाँच गर्नुहोस्।
  1. फाइलको अन्त्यमा पुगेको (EOF)
  • कारण: फाइललाई अन्त्यसम्म पढियो।
  • समाधान: EOF लाई सही रूपमा ह्यान्डल गर्नुहोस्।
  1. फाइल पointer को अनुचित प्रयोग
  • कारण: फाइल पointer अमान्य वा बन्द छ।
  • समाधान: पointer NULL हो कि जाँच गर्नुहोस्।

त्रुटि पत्ता लगाउने आधारभूत विधिहरू

1. fopen फलनको रिटर्न मान जाँच गर्नुहोस्

fopen फलनले, फाइल सफलतापूर्वक खोल्न सकेमा फाइल पोइन्टर फिर्ता गर्छ, तर त्रुटि भएमा NULL फिर्ता गर्छ।

उदाहरण: फाइल खोल्न नसकिने अवस्थाको ह्यान्डलिङ

FILE *file = fopen("nonexistent.txt", "r");
if (file == NULL) {
    perror("फाइल खोल्ने त्रुटि");
    return 1;
}

बिन्दु:

  • perror फलनले, तुरुन्तै भएको त्रुटिको विस्तृत व्याख्या आउटपुट गर्छ।

2. लेखन/पढाइ त्रुटिको जाँच

fwritefread प्रयोग गरे पछि, डाटा सही रूपमा प्रक्रिया भएको छ कि जाँच गर्नुहोस्।

उदाहरण: fwrite पछि त्रुटि जाँच

size_t written = fwrite(data, sizeof(int), 5, file);
if (written < 5) {
    printf("डेटा लेखन त्रुटि भएको छ。
");
}

उदाहरण: fread पछि त्रुटि जाँच

size_t read = fread(data, sizeof(int), 5, file);
if (read < 5) {
    if (feof(file)) {
        printf("फाइलको अन्त्यमा पुगियो。
");
    } else if (ferror(file)) {
        printf("पढ्ने क्रममा त्रुटि भयो。
");
    }
}

3. feof फलन र ferror फलनको प्रयोग

  • feof फलन
    feof फलन फाइलको अन्त्यमा पुगेको छ कि छैन जाँच गर्छ।
    फर्किने मान: अन्त्यमा पुगेको छ भने गैर-शून्य मान फर्काउँछ।
  • ferror फलन
    ferror फलन फाइल अपरेसनको दौरान त्रुटि भएको छ कि छैन जाँच गर्छ।
    फर्किने मान: त्रुटि भएको छ भने गैर-शून्य मान फर्काउँछ।

उदाहरण: फाइल पढाइको दौरान EOF र त्रुटि जाँच

int c;
while ((c = fgetc(file)) != EOF) {
    putchar(c);
}

if (feof(file)) {
    printf("फाइलको अन्त्यमा पुगियो。
");
} else if (ferror(file)) {
    printf("फाइल पढ्दा त्रुटि भयो。
");
}

त्रुटि ह्यान्डलिङको सर्वोत्तम अभ्यासहरू

  1. त्रुटि ह्यान्डलिङलाई चाँडै गर्नुहोस्
    फाइल खोल्ने चरणमा त्रुटि पत्ता लगाएर, प्रोग्रामको पछिल्लो प्रक्रिया मा असर नपरोस।
  2. विस्तृत त्रुटि सन्देश देखाउनुहोस्
    प्रयोगकर्ता वा विकासकर्ताले समस्या सजिलै पहिचान गर्न सकून्, त्यसका लागि त्रुटिको सामग्री स्पष्ट रूपमा बताउनुहोस्।
  3. स्रोतहरूलाई निश्चित रूपमा मुक्त गर्नुहोस्
    त्रुटि भए पनि, खुला फाइललाई उपयुक्त रूपमा बन्द गर्नुहोस्।

उदाहरण: फाइल सञ्चालनको दौरान स्रोत मुक्ति

FILE *file = fopen("example.txt", "r");
if (file == NULL) {
    perror("फाइल खोल्ने त्रुटि");
    return 1;
}

// फाइल सञ्चालन(छोडिएको)

if (fclose(file) != 0) {
    printf("फाइल बन्द गर्दा त्रुटि भएको छ。\n");
}

व्यावहारिक उदाहरण: सुरक्षित फाइल पढ्ने प्रोग्राम

तल फाइल पढ्ने क्रममा त्रुटिहरूलाई सुरक्षित रूपमा ह्यान्डल गर्ने प्रोग्रामको उदाहरण हो।

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (file == NULL) {
        perror("फाइल खोल्ने त्रुटि");
        return 1;
    }

    char buffer[100];
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }

    if (feof(file)) {
        printf("
फाइल सफलतापूर्वक पढियो।
");
    } else if (ferror(file)) {
        printf("
पढ्दा त्रुटि भयो।
");
    }

    fclose(file);
    return 0;
}

सारांश

  • फाइल सञ्चालनको दौरान त्रुटिहरू, fopen, fwrite, fread आदि को फर्किने मान जाँच गरेर पत्ता लगाउनुहोस्।
  • feofferror प्रयोग गरेर, फाइलको अवस्थालाई विस्तृत रूपमा जाँच गर्नुहोस्।
  • त्रुटि ह्यान्डलिङलाई उपयुक्त रूपमा लागू गरेर, प्रोग्रामको विश्वसनीयता र स्थिरता सुधार गर्न सकिन्छ।

8. अनुप्रयोग

C भाषा को फाइल अपरेसन बुझिसकेपछि, अनुप्रयोगात्मक अपरेसनहरूमा पनि चुनौती दिनुहोस्। यस सेक्सनमा, बहु फाइलको समकालिक अपरेसन, अस्थायी फाइलको प्रयोग, फाइलको रिनेम र मेटाउने जस्ता अनुप्रयोगात्मक प्रविधिहरू प्रस्तुत गरिन्छ। यी सिकेर, अझ व्यावहारिक प्रोग्राम बनाउन सकिन्छ।

बहु फाइलको समकालिक अपरेसन

C भाषामा, बहु फाइलहरूलाई एकै साथ खोलेर अपरेसन गर्न सकिन्छ। यसले, लग फाइल र एरर फाइललाई अलग-अलग रेकर्ड गर्ने जस्ता जटिल अपरेसनहरू सम्भव बनाउँछ।

उदाहरण: लग फाइल र एरर फाइलको समकालिक अपरेसन

#include <stdio.h>

int main() {
    FILE *logFile = fopen("log.txt", "w");
    FILE *errorFile = fopen("error.txt", "w");

    if (logFile == NULL || errorFile == NULL) {
        printf("फाइल खोल्न सकिएन。
");
        return 1;
    }

    fprintf(logFile, "लॉग: कार्यक्रम सफलतापूर्वक चलियो。
");
    fprintf(errorFile, "त्रुटि: अनपेक्षित इनपुट पत्ता लगाइएको छ。
");

    fclose(logFile);
    fclose(errorFile);

    printf("लॉग र त्रुटि दुवै रेकर्ड गरियो。
");
    return 0;
}

बुँदा:

  • बहुFILEपॉइन्टर प्रयोग गरेर, विभिन्न उद्देश्यको डेटा अलग-अलग फाइलमा बचत गरिन्छ।
  • खोलिएको फाइलहरू सबैलाई निश्चित रूपमा बन्द गर्नुहोस्।

अस्थायी फाइलको प्रयोग

अस्थायी फाइलहरू प्रोग्राम चलिरहेको बेला अस्थायी डेटा बचत गर्न प्रयोग गरिन्छ। प्रोग्राम समाप्त हुँदा स्वचालित रूपमा मेटाइन्छ, जसले सुरक्षा र स्रोत व्यवस्थापनको दृष्टिले उपयोगी हुन्छ।

tmpfile फलन प्रयोग गरेर अस्थायी फाइलको सिर्जना

tmpfileफलन प्रयोग गर्दा, अस्थायी फाइल सजिलै सिर्जना गर्न सकिन्छ।

उदाहरण: अस्थायी फाइलको प्रयोग

#include <stdio.h>

int main() {
    FILE *tempFile = tmpfile();
    if (tempFile == NULL) {
        printf("अस्थायी फाइल सिर्जना गर्न सकिएन।\n");
        return 1;
    }

    fprintf(tempFile, "यो डेटा अस्थायी रूपमा सुरक्षित गरिन्छ।\n");

    // अस्थायी फाइलको सामग्री पढ्नुहोस्
    rewind(tempFile);
    char buffer[100];
    fgets(buffer, sizeof(buffer), tempFile);
    printf("अस्थायी फाइलको सामग्री: %s", buffer);

    // अस्थायी फाइल स्वतः हटाइन्छ
    fclose(tempFile);

    return 0;
}

बुँदा:

  • अस्थायी फाइलको सामग्री पुन: प्रयोग गर्न चाहनुहुन्छ भने, rewind फलनले फाइल पोइन्टरलाई सुरुमा फर्काउँछ।
  • फाइल प्रोग्राम समाप्त हुँदा स्वचालित रूपमा मेटाइन्छ, त्यसैले म्यानुअली मेटाउन आवश्यक छैन।

फाइलको रिनेम र मेटाउने

C भाषामा, अवस्थित फाइललाई रिनेम (नाम परिवर्तन) वा मेटाउन सकिन्छ।

rename फलन: फाइलनामको परिवर्तन

सिन्ट्याक्स

int rename(const char *oldname, const char *newname);
  • oldname: परिवर्तनपूर्व फाइलनाम।
  • newname: परिवर्तनपश्चात फाइलनाम।
  • रिटर्न मान: सफल भए 0 फिर्ता गर्छ, असफल भए शून्य नभएको मान फिर्ता गर्छ।

उदाहरण: फाइलनामको परिवर्तन

#include <stdio.h>

int main() {
    if (rename("oldfile.txt", "newfile.txt") == 0) {
        printf("फाइलको नाम परिवर्तन गरियो。
");
    } else {
        printf("फाइलको नाम परिवर्तन गर्न असफल भयो。
");
    }

    return 0;
}

remove फलन: फाइलको मेटाउने

सिन्ट्याक्स

int remove(const char *filename);
  • filename: मेटाइने फाइलनाम।
  • रिटर्न मान: सफल भए 0 फिर्ता गर्छ, असफल भए शून्य नभएको मान फिर्ता गर्छ।

उदाहरण: फाइलको मेटाउने

#include <stdio.h>

int main() {
    if (remove("unnecessary.txt") == 0) {
        printf("फाइल हटाइयो。
");
    } else {
        printf("फाइल हटाउन असफल भयो。
");
    }

    return 0;
}

बुँदा:

  • फाइलनाम परिवर्तन वा मेटाउने बेला, फाइल अस्तित्वमा छ कि छैन पूर्वजाँच गर्न सिफारिस गरिन्छ।
  • मेटाउने वा रिनेममा असफल भएमा, त्रुटिको कारण जाँच गर्नुहोस्।

व्यावहारिक उदाहरण: फाइल व्यवस्थापन उपकरण

तल रिनेम र मेटाउनेलाई संयोजन गरेको सरल फाइल व्यवस्थापन प्रोग्रामको उदाहरण हो।

#include <stdio.h>

int main() {
    // फाइलको नाम परिवर्तन गर्नुहोस्
    if (rename("tempfile.txt", "finalfile.txt") == 0) {
        printf("फाइलको नाम 'finalfile.txt' मा परिवर्तन गरियो।\n");
    } else {
        printf("फाइलको नाम परिवर्तन गर्न असफल भयो।\n");
    }

    // फाइल हटाउनुहोस्
    if (remove("finalfile.txt") == 0) {
        printf("फाइल 'finalfile.txt' हटाइयो।\n");
    } else {
        printf("फाइल हटाउन असफल भयो।\n");
    }

    return 0;
}

सारांश

  • बहु फाइललाई एकै साथ अपरेसन गर्दा, जटिल प्रोग्राम निर्माण सम्भव हुन्छ।
  • अस्थायी फाइल प्रयोग गर्दा, सुरक्षा र कार्यक्षमता सुधार हुन्छ।
  • renameremove प्रयोग गरेर, फाइल व्यवस्थापन सजिलै गर्न सकिन्छ।

9. FAQ(सामान्य प्रश्नहरू)

यहाँ, C भाषा को फाइल अपरेसन सम्बन्धी, पाठकहरूले प्रायः सोध्ने प्रश्नहरूलाई Q&A ढाँचामा व्याख्या गरिन्छ। आधारभूत प्रश्नहरूदेखि उन्नत विषयहरू सम्म, बुझाइ गहिरो बनाउनको लागि सन्दर्भको रूपमा प्रयोग गर्नुहोस्।

Q1: fopen फङ्क्शनले फाइल खोल्न नसक्ने कारण के हो?

A1:
तलका कारणहरू विचार गर्न सकिन्छ।

  1. फाइल अवस्थित छैन (\”r\” मोडको अवस्थामा)।
  2. फाइलको पथ गलत छ।
  3. पढ्ने वा लेख्ने अधिकार छैन।
  4. डिस्क स्थान कम छ।

समाधान विधि:

  • फाइलनाम र पथ जाँच गर्नुहोस्।
  • फाइल अवस्थित नभएमा, @\”w\” मोड वा @\”a\” मोडमा नयाँ फाइल सिर्जना गर्नुहोस्।
  • फाइलको अधिकार जाँच गरी, उपयुक्त अधिकार प्रदान गर्नुहोस्।

Q2: “w” मोड र “a” मोडको भिन्नता के हो?

A2:

  • “w” मोड(लेख्ने मात्र)
  • फाइल अवस्थित भएमा, यसको सामग्री सबै मेटाइन्छ।
  • फाइल अवस्थित नभएमा, नयाँ फाइल सिर्जना गरिन्छ।
  • “a” मोड(जोड्ने मात्र)
  • फाइल अवस्थित भएमा, पुरानो सामग्री राखिन्छ, नयाँ डेटा अन्त्यमा जोडिन्छ।
  • फाइल अवस्थित नभएमा, नयाँ फाइल सिर्जना गरिन्छ।

Q3: टेक्स्ट फाइल र बाइनरी फाइलको भिन्नता के हो?

A3:

विशेषताटेक्स्ट फाइलबाइनरी फाइल
डेटा स्वरूपमानवले पढ्न सक्ने स्वरूप (ASCII वा UTF-8 आदि)कम्प्युटरका लागि स्वरूप
उपयोगसेटिङ फाइल, लग डेटा आदिछवि, ध्वनि, डाटाबेस आदि
आकारसामान्यतया ठूलो हुन्छअधिक संकुचित रूपमा सुरक्षित गर्न सकिन्छ
सञ्चालनको सजिलोपनएडिटरमा सजिलै खोल्न सकिन्छविशिष्ट प्रोग्रामद्वारा मात्र पढ्न/लेख्न सम्भव

बिन्दु: शुरुआतीहरूले पहिले टेक्स्ट फाइल अपरेसनबाट सुरु गर्नु राम्रो हुन्छ।

Q4: फाइल अपरेसनको क्रममा त्रुटि आएमा, कसरी समाधान गर्ने?

A4:
त्रुटि आएमा तलका बुँदाहरू जाँच गर्नुहोस्:

  1. फाइल पोइन्टरको जाँच:
    फाइल खोल्दा fopen NULL फिर्ता गरिरहेको छैन भनि जाँच गर्नुहोस्।
  2. त्रुटि सन्देशको प्रदर्शन:
    perror फङ्क्शन प्रयोग गरी विस्तृत त्रुटि जानकारी देखाउनुहोस्।
  3. ferrorfeof को प्रयोग:
    पढ्ने वा लेख्ने क्रममा त्रुटि आएमा, यी फङ्क्शनहरूद्वारा स्थिती जाँच गर्नुहोस्।

Q5: फाइल बन्द नगरेमा के हुन्छ?

A5:

  • डेटा सही रूपमा सुरक्षित नहुन सक्छ।
  • खोलिएको फाइल बन्द नगरेको अवस्थामा, मेमोरी लीक वा स्रोत अभावको कारण बन्छ।
  • विशेष गरी प्रोग्रामले धेरै फाइल खोल्दा, नबन्द फाइलहरू बढेमा प्रणालीमा भार पर्छ।

समाधान विधि:

  • fclose फङ्क्शन अनिवार्य रूपमा प्रयोग गरी, त्रुटि ह्यान्डलिंग थप्नुहोस्।

Q6: बाइनरी फाइल पढ्ने/लेख्ने क्रममा ध्यान दिनुपर्ने बुँदाहरू के हुन्?

A6:

  • डेटा आकार:
    freadfwrite द्वारा निर्दिष्ट डेटा आकारलाई ठीकसँग सेट गर्नुहोस्।
  • एन्डियनको भिन्नता:
    विभिन्न प्लेटफर्महरू बीच बाइनरी फाइल प्रयोग गर्दा, एन्डियन (बिग एन्डियन र लिट्ल एन्डियन) को भिन्नतामा ध्यान दिनुहोस्।
  • डेटाको समरूपता:
    फाइललाई सही रूपमा खोल्न/बन्द गर्न, डेटा नहराउने गरी ध्यान दिनुहोस्।

Q7: EOF(फाइलको अन्त्य)के हो?

A7:
EOF (End Of File) फाइलको अन्त्यमा पुगेको संकेत गर्ने विशेष मान हो। तलका फङ्क्शनहरूद्वारा EOF जाँच गर्न सकिन्छ:

  • fgetc
  • fgets
  • fscanf

EOF जाँच गर्ने उदाहरण:

int c;
while ((c = fgetc(file)) != EOF) {
    putchar(c);
}

ध्यान:
EOF सामान्यतया -1 को रूपमा परिभाषित हुन्छ, तर प्रोग्राममा EOF प्रयोग गरी तुलना गर्ने सिफारिस गरिन्छ।

Q8: C भाषामा फाइल अपरेसनलाई प्रभावकारी रूपमा सिक्न कसरी गर्न सकिन्छ?

A8:

  • आधारलाई दृढ रूपमा सिक्नुहोस्:
    fopen, fclose, fprintf, fscanf जस्ता आधारभूत फङ्क्शनहरूको प्रयोग सिक्नुहोस्।
  • व्यावहारिक परियोजनाहरू:
    लग फाइलको सुरक्षित गर्नु वा सरल डाटाबेस निर्माण जस्ता साना परियोजनामा काम गरेर बुझाइ गहिरो हुन्छ।

सारांश

  • FAQ सेक्सनमा, C भाषाको फाइल अपरेसन सम्बन्धी सामान्य प्रश्नहरूलाई व्यापक रूपमा व्याख्या गरिएको छ।
  • आधारभूत अपरेसनदेखि त्रुटि ह्यान्डलिंगसम्म, व्यावहारिक रूपमा उपयोगी ज्ञान हासिल गर्नुहोस्।
  • अस्पष्ट बुँदा भएमा, पहिले दस्तावेज वा रेफरेन्स हेर्नुहोस्।

10. सारांश

यस लेखमा, C भाषा मा फाइल अपरेसन सम्बन्धी, आधारभूतदेखि उन्नत सम्म व्यवस्थित रूपमा व्याख्या गरिएको छ। फाइल अपरेसन प्रोग्रामले बाह्य डेटा सँग अन्तरक्रिया गर्न आवश्यक प्रविधि हो र विभिन्न प्रयोजनहरूमा प्रयोग गर्न सकिन्छ। यस खण्डमा, लेखको सम्पूर्ण मुख्य बुँदाहरूलाई पुनरावलोकन गरी, अर्को चरणको लागि सल्लाह प्रस्तुत गरिन्छ।

महत्वपूर्ण बुँदाहरूको पुनरावलोकन

1. आधारभूत अवधारणा

  • फाइलहरूलाई टेक्स्ट स्वरूप र बाइनरी स्वरूपमा वर्गीकृत गरिन्छ, र प्रत्येकको प्रयोग फरक हुन्छ।
  • C भाषामा फाइल अपरेसन गर्दा, हेडर फाइल प्रयोग गरिन्छ।

2. फाइल अपरेसनको आधारभूत

  • fopen कार्यले फाइल खोल्छ, र उपयुक्त मोड (उदाहरण: "r", "w") चयन गर्नुहोस्।
  • फाइल खोलिसकेपछि, अनिवार्य रूपमा fclose कार्यले बन्द गर्न आवश्यक छ।

3. लेखन र पढाइ

  • लेखनमा, fprintf वा fputs जस्ता कार्यहरू प्रयोग गरेर डेटा सुरक्षित गरिन्छ।
  • पढाइमा, fscanf वा fgets प्रयोग गरेर फाइलबाट डेटा प्राप्त गरिन्छ।

4. बाइनरी फाइल अपरेसन

  • बाइनरी फाइलमा, freadfwrite प्रयोग गरेर डेटा प्रभावकारी रूपमा पढ्न र लेख्न सकिन्छ।
  • संरचना (struct) लाई सुरक्षित र पढेर, जटिल डेटा संरचनाहरू पनि ह्यान्डल गर्न सकिन्छ।

5. त्रुटि ह्यान्डलिङ

  • फाइल अपरेसनको क्रममा त्रुटि हुनसक्ने सम्भावनालाई विचार गरी, ferror वा feof प्रयोग गरेर त्रुटि प्रक्रिया थप्नुहोस्।

6. अनुप्रयोगात्मक अपरेसन

  • एकै समयमा धेरै फाइलहरू संचालन, अस्थायी फाइल प्रयोग, फाइलको नाम परिवर्तन वा मेटाउने जस्ता अनुप्रयोग प्रविधिहरूलाई प्रयोग गरेर, अझ व्यावहारिक प्रोग्राम निर्माण गर्न सकिन्छ।

अर्को चरणको लागि सल्लाह

C भाषाको फाइल अपरेसनको आधारभूत सिकेपछि, तलका चरणहरूमा चुनौती दिनुहोस्।

  1. CSV र JSON फाइलको अपरेसन
  • फाइल स्वरूप अनुसार पार्सर बनाइ, डेटा पढ्ने/लेख्ने कार्यान्वयन गर्नुहोस्।
  • उदाहरण: विद्यार्थीको ग्रेड डेटा CSV फाइलमा सुरक्षित गरी, पढेर विश्लेषण गर्नु।
  1. त्रुटि ह्यान्डलिङको सुदृढीकरण
  • फाइल अपरेसनको समयमा त्रुटि रेकर्ड गर्ने लग प्रणाली निर्माण गरी, प्रोग्रामको विश्वसनीयता बढाउनु।
  1. मल्टिथ्रेड वातावरणमा फाइल अपरेसन
  • एकै समयमा धेरै थ्रेडहरूमा फाइललाई सुरक्षित रूपमा अपरेसन गर्ने तरिका सिक्नु।
  1. फाइल अपरेसन प्रयोग गरेर प्रोजेक्ट विकास
  • व्यावहारिक प्रोग्राम विकास गरी, फाइल अपरेसनको सीपलाई गहिरो बनाउनु।
  • उदाहरण: सरल डेटाबेस, सेटिङ्ग व्यवस्थापन उपकरण, लग सङ्कलन प्रोग्राम आदि।

अन्तमा

C भाषामा फाइल अपरेसन प्रोग्रामको उपयोगिता बढाउने महत्वपूर्ण सीप हो। सुरुमा कठिन लाग्न सक्छ, तर आधारभूतलाई समेटी अभ्यास गर्दा, निश्चित रूपमा बुझाइ गहिरो हुन्छ। यस लेखमार्फत, फाइल अपरेसनमा आत्मविश्वास प्राप्त गर्नुहोस्, र थप जटिल प्रोजेक्टहरूमा चुनौती दिनको लागि आधार निर्माण भएको आशा गर्दछौं।