C भाषा getchar फंक्शन: मूलभूतदेखि उन्नत प्रयोगसम्म

目次

1. getchar function के हो?

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

getchar function को विशेषताहरू

  • मानक इनपुटबाट एक अक्षर प्राप्त गर्नु: किबोर्डबाट इनपुट निश्चित हुने सम्म पर्खन्छ, र Enter कुञ्जी थिचिएपछि प्रक्रिया सुरु हुन्छ।
  • ASCII कोड फिर्ता गर्नु: प्राप्त अक्षर सिधै होइन, ASCII कोडको रूपमा फिर्ता गरिन्छ। अक्षरको रूपमा प्रयोग गर्न कास्ट आवश्यक हुन्छ।

getcharविशेष गरी सरल प्रयोगकर्ता इनपुट प्रक्रिया र अन्तरक्रियात्मक प्रोग्रामहरूमा उपयुक्त छ। अन्य इनपुट function हरूसँग तुलना गर्दा प्रयोग गर्न सजिलो पक्षहरू धेरै छन्, र C भाषा को अध्ययनको प्रारम्भिक चरणमा प्राय प्रयोग गरिन्छ।

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

तलको, getcharलाई प्रयोग गरेको सरल इनपुट उदाहरण हो।

#include <stdio.h>

int main() {
    int c;
    printf("कृपया अक्षर प्रविष्ट गर्नुहोस्: ");
    c = getchar();
    printf("प्रविष्ट गरिएको अक्षर: %c
", c);
    return 0;
}

यो प्रोग्राममा, प्रयोगकर्ताले किबोर्डबाट इनपुट गरेको एक अक्षर प्राप्त हुन्छ, र त्यो अक्षर स्क्रीनमा देखाइन्छ। वास्तविक आउटपुट परिणाम, उदाहरण-का लागि “A” इनपुट गर्दा, तल देखाइँदैछ।

कृपया अक्षर प्रविष्ट गर्नुहोस्: A
प्रविष्ट गरिएको अक्षर: A

2. getchar function को मूलभूत प्रयोग

मूलभूत कल विधि

getchar function लाई तलको जस्तै कल गरिन्छ।

int getchar(void);

यो आर्गुमेन्ट नलिई, एक अक्षर प्राप्त गरी, त्यस अक्षरको ASCII कोड फिर्ता गर्छ। रिटर्न मान इन्टिजर प्रकार(int)हो, र त्रुटि भएमाEOF(End Of File)फिर्ता गर्छ।

सरल अक्षर इनपुटको उदाहरण

उपरोक्त प्रयोग उदाहरणमा,getchar प्रयोग गरी एक अक्षर प्राप्त गरी, त्यसलाई स्क्रिनमा देखायो। यसरीgetchar एक अक्षर मात्र प्रक्रिया गर्न आवश्यक परेमा उपयोगी हुन्छ।

#include <stdio.h>

int main() {
    int c;
    printf("कृपया अक्षर प्रविष्ट गर्नुहोस्: ");
    c = getchar();
    printf("प्रविष्ट गरिएको अक्षर: %c
", c);
    return 0;
}

यो कोडमा, इनपुट गरिएको अक्षरलाईgetchar function द्वारा पढी,printf प्रयोग गरी देखाइन्छ।

年収訴求

3. getchar को प्रयोग उदाहरण

EOF (फाइलको अन्त्य) र getchar

getcharफङ्क्शनले केवल अक्षर प्राप्त गर्ने मात्र होइन, इनपुटको अन्त्यमा पुगेको बेला EOF (End Of File) फिर्ता गर्दछ। उदाहरणका लागि, फाइलबाटको इनपुट वा मानक इनपुटमा「Ctrl+Z」(Windows को अवस्थामा)या「Ctrl+D」(Unix को अवस्थामा)प्रविष्ट गरेर EOF पत्ता लगाउन सम्भव छ।

तलको उदाहरण EOF इनपुट हुने सम्म अक्षरहरू पढ्दै रहने कार्यक्रम हो।

#include <stdio.h>

int main() {
    int c;
    printf("कृपया अक्षरहरू प्रविष्ट गर्नुहोस् (EOF मा समाप्त हुन्छ): ");
    while ((c = getchar()) != EOF) {
        putchar(c);
    }
    return 0;
}

यो कोडले getchar फङ्क्शन र putchar फङ्क्शन प्रयोग गरेर, इनपुट गरिएको अक्षरलाई सोझै स्क्रिनमा आउटपुट गर्दछ। EOF इनपुट हुने सम्म, अक्षरको इनपुट जारी राख्न सकिन्छ।

बहु-अक्षर इनपुट

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

#include <stdio.h>

int main() {
    int c;
    printf("कृपया स्ट्रिङ् प्रविष्ट गर्नुहोस्: ");
    while ((c = getchar()) != 'n') {
        printf("प्रविष्ट गरिएको अक्षर: %cn", c);
    }
    return 0;
}

यो प्रोग्रामले getchar द्वारा एक-एक अक्षर प्राप्त गरी, त्यसलाई स्क्रिनमा देखाउँछ।'n'(नयाँ लाइन अक्षर)इनपुट हुने सम्म लूप जारी रहन्छ।

4. EOF र बफर प्रक्रिया

EOF को भूमिका

EOF(End Of File) फाइल वा मानक इनपुटको अन्त्यलाई जनाउँछ।getchar function ले, EOF मा पुग्दा-1 फिर्ता गर्छ, र प्रोग्रामले त्यसलाई पत्ता लगाएर प्रक्रिया समाप्त गर्न सक्छ।EOF सामान्यतया फाइलको अन्त्य देखाउन प्रयोग गरिन्छ, तर किबोर्ड इनपुटको अवस्थामा विशेष कुञ्जी संयोजनले EOF पठाउन सकिन्छ।

बफरिङ र getchar

getchar function ले, इनपुट बफरिङ भएको कारण, प्रयोगकर्ताले इनपुट गरेको सबै अक्षर बफरमा सुरक्षित हुन्छ। उदाहरणका लागि,getchar लाई धेरै पटक कल गर्दा, बफरमा सुरक्षित भएको अर्को अक्षर फिर्ता हुन्छ। यस कारण, newline अक्षर इनपुट नहुनु सम्म प्रोग्रामले अर्को प्रक्रियामा नजाने स्थिति हुन सक्छ।

बफरभित्रको newline अक्षरलाई बेवास्ता गर्न, तलको जस्तै प्रक्रिया थप्न सकिन्छ।

#include <stdio.h>

int main() {
    int c;
    printf("कृपया अक्षर प्रविष्ट गर्नुहोस्: ");
    c = getchar();
    while (getchar() != 'n');  // बफरमा बाँकी रहेको नयाँ पङ्क्ति वर्णलाई अनदेखा गर्नुहोस्
    printf("प्रविष्ट गरिएको अक्षर: %cn", c);
    return 0;
}

यो कोडले, इनपुट गरिएको अक्षर देखाइने अघि, newline अक्षर बफरबाट पढिनुबाट रोक्नको लागि एउटा उदाहरण हो।

5. getchar function र अन्य इनपुट फङ्क्सनहरूको तुलना

getchar र scanf को भिन्नता

getcharscanf दुवै इनपुट प्राप्त गर्ने फङ्क्सन हुन्, तर तिनीहरूको प्रयोग र लागू हुने परिस्थितिमा ठूलो भिन्नता छ।scanf ले फर्म्याट स्पेसिफायर प्रयोग गरेर, पूर्णांक, फ्लोटिङ पोइन्ट नम्बर, स्ट्रिङ आदि विभिन्न डेटा प्रकारहरू इनपुट गर्न सक्छ। अर्कोतर्फ, getchar केवल मानक इनपुटबाट १ अक्षर प्राप्त गर्ने सरल फङ्क्सन हो।

scanf प्रयोग गरेर इनपुटको उदाहरण:

#include <stdio.h>

int main() {
    int num;
    printf("कृपया संख्या प्रविष्ट गर्नुहोस्: ");
    scanf("%d", &num);
    printf("प्रविष्ट गरिएको संख्या: %dn", num);
    return 0;
}

यो कोडमा, scanf प्रयोग गरेर पूर्णांक मान इनपुट गरिन्छ र त्यसलाई प्रदर्शन गरिन्छ। यसरी, scanf विभिन्न डेटा प्रकारहरूलाई समर्थन गर्दछ र एकै पटक धेरै मानहरू प्राप्त गर्न सक्छ।

getchar र fgets को भिन्नता

fgets ले getchar भन्दा फरक गरी, एकै पटक धेरै अक्षर (स्ट्रिङ) पढ्न सक्छ। यो मानक इनपुटबाट स्ट्रिङ पढ्ने अवस्थामा अत्यन्त उपयोगी छ। साथै, fgets बफरको आकार निर्दिष्ट गर्न सक्ने कारणले, scanf जस्तै बफर ओभरफ्लो जोखिमलाई टाल्न सकिन्छ।

fgets प्रयोग गरेर इनपुटको उदाहरण:

#include <stdio.h>

int main() {
    char str[100];
    printf("कृपया स्ट्रिङ प्रविष्ट गर्नुहोस्: ");
    fgets(str, sizeof(str), stdin);
    printf("प्रविष्ट गरिएको स्ट्रिङ: %s", str);
    return 0;
}

यो कोडमा, fgets प्रयोग गरेर स्ट्रिङ प्राप्त गरिन्छ र त्यसलाई प्रदर्शन गरिन्छ। fgets ले newline क्यारेक्टरसम्म समेटेर १ लाइनको इनपुट पढ्छ, त्यसैले बहु-लाइन डेटा प्रक्रिया गर्दा पनि उपयोगी हुन्छ।

getchar, scanf, fgets को प्रयोग विभाजन

  • getchar केवल १ अक्षरको इनपुट प्रक्रिया गर्दा प्रयोग गरिन्छ। उदाहरणका लागि, मेनु चयन वा कुञ्जी इनपुटलाई क्रमशः प्रक्रिया गर्ने अवस्थामा उपयुक्त हुन्छ।
  • scanf धेरै प्रकार (संख्या वा स्ट्रिङ) प्राप्त गर्न चाहनुहुन्छ भने उपयुक्त हुन्छ, तर त्रुटि जाँच आवश्यक छ।
  • fgets लामो स्ट्रिङ वा बहु-लाइन डेटा इनपुट आवश्यक परेमा उपयोगी हुन्छ। साथै, बफर ओभरफ्लो रोक्नका लागि पढिने अक्षरसंख्यालाई सीमित गर्न सक्ने फाइदा छ।

6. getchar प्रयोग गरेर व्यावहारिक उदाहरण: अन्तरक्रियात्मक कार्यक्रम

getcharफङ्क्शन प्रायः प्रयोगकर्ता इनपुट प्रयोग गर्ने अन्तरक्रियात्मक कार्यक्रमहरूमा प्रयोग गरिन्छ। यहाँ, विशिष्ट कुञ्जी इनपुट अनुसारको प्रक्रिया गर्ने उदाहरण प्रस्तुत गरिन्छ। यस्तो कार्यक्रम सरल खेल वा मेनु प्रणाली निर्माण गर्दा उपयोगी हुन्छ।

नमूना कोड: अक्षर इनपुट अनुसार मेनु सञ्चालन

#include <stdio.h>

int main() {
    char choice;
    printf("मेनु चयन गर्नुहोस् (a: नमस्ते, b: अन्त्य): ");
    choice = getchar();

    switch (choice) {
        case 'a':
            printf("नमस्ते!n");
            break;
        case 'b':
            printf("प्रोग्राम समाप्त हुन्छ।n");
            break;
        default:
            printf("अवैध चयन।n");
    }

    return 0;
}

यो कार्यक्रममा, प्रयोगकर्ताले ‘a’ वा ‘b’ इनपुट गर्दा, विशिष्ट सन्देश देखाइन्छ।getchar प्रयोग गरेर, सरल मेनु कार्यान्वयन गर्न, प्रयोगकर्ताको इनपुट अनुसार प्रक्रिया गर्न सकिन्छ।

उन्नत कार्यक्रम: बहु आदेशहरूलाई समर्थन

तलको कोडले, प्रयोगकर्ताले विशिष्ट अक्षर इनपुट गर्दा, त्यस इनपुट अनुसारको प्रक्रिया कार्यान्वयन गर्ने उदाहरण हो।

#include <stdio.h>

int main() {
    char command;
    printf("कमान्ड प्रविष्ट गर्नुहोस् (l: सूची प्रदर्शन, h: नमस्कार, q: अन्त्य): ");
    command = getchar();

    switch (command) {
        case 'l':
            printf("सूची देखाउँछ।n");
            break;
        case 'h':
            printf("नमस्ते!n");
            break;
        case 'q':
            printf("प्रोग्राम समाप्त हुन्छ।n");
            break;
        default:
            printf("अवैध कमाण्ड हो।n");
    }

    return 0;
}

यो कार्यक्रममा, प्रयोगकर्ताले निर्दिष्ट आदेश(lhq)इनपुट गर्दा, त्यससँग मिल्दो प्रक्रिया कार्यान्वयन हुन्छ।

7. getchar को ध्यान दिनुपर्ने बुँदा र सर्वोत्तम अभ्यास

सामान्य समस्या: बफरको प्रक्रिया

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

नयाँ लाइन क्यारेक्टरलाई बेवास्ता गर्ने तरिका:

#include <stdio.h>

int main() {
    int c;
    printf("कृपया अक्षर प्रविष्ट गर्नुहोस्: ");
    c = getchar();
    while (getchar() != 'n');  // पङ्क्ति परिवर्तन अक्षरलाई नपार्ने
    printf("प्रविष्ट गरिएको अक्षर: %cn", c);
    return 0;
}

यो कोडमा, getchar प्रयोग गरेर 1 क्यारेक्टर इनपुट गरेपछि, नयाँ लाइन क्यारेक्टर बफरमा बाँकी रहन्छ, त्यसलाई while लूपमा बेवास्ता गर्ने प्रक्रिया थपिएको छ।

सर्वोत्तम अभ्यास

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

8. सारांश र आगामी चरणहरू

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

अगाडि सिक्नुपर्ने चरणहरू

  1. fgets र scanf को थप प्रयोग: यदि स्ट्रिङ वा संख्यात्मक इनपुट प्रोसेस गर्न चाहनुहुन्छ भने、fgets वाscanf जस्ता अन्य इनपुट फङ्सनहरूको प्रयोगलाई गहिरो रूपमा सिक्नु उपयोगी हुन्छ。
  2. फाइल इनपुटको प्रयोग: getchar केवल मानक इनपुटमा मात्र होइन、फाइलबाट डेटा पढ्न पनि प्रयोग गर्न सकिन्छ। फाइल इनपुट/आउटपुट प्रोसेस सिकेर、थप अनुप्रयोगको दायरा विस्तार हुन्छ。
  3. त्रुटि ह्यान्डलिङको अभ्यास: इनपुट गर्दा त्रुटि ह्यान्डलिङ (विशेष गरी EOF वा अवैध इनपुटको प्रोसेस) सही रूपमा गर्नेले、अझ बलियो प्रोग्राम बनाउन सकिन्छ。

C भाषाको आधारभूत कुरा समेटेपछि、व्यावहारिक प्रोग्राम बनाउनका लागि、यी ज्ञानलाई गहिरो बनाइरहने कुरा महत्वपूर्ण छ。

侍エンジニア塾