C मा scanf कार्यको मास्टरिङ: ढाँचा निर्दिष्टकर्ता, इनपुट प्रमाणीकरण, र सामान्य समस्याहरू

1. scanf Function Overview

C प्रोग्रामिङ भाषा सिक्दा, डाटा प्रोग्राममा प्रविष्टि गर्ने सबैभन्दा प्रयोग हुने तरिकामध्ये एउटा scanf फङ्सन हो। यो प्रोग्रामको “सुनुवाइकर्ता” जस्तै काम गर्छ जसले प्रयोगकर्ताले प्रविष्ट गरेको डाटा निर्दिष्ट भेरिएबलहरूमा भण्डारण गर्छ।

scanf को आधारभूत सिन्ट्याक्स

scanf("formatSpecifier", &variable);

यहाँ मुख्य तत्वहरू “formatSpecifier” र भेरिएबलको अगाडि रहेको एम्पर्स्याण्ड (&) हो। फर्म्याट स्पेसिफायरले प्रविष्टि हुने डाटाको प्रकार निर्धारण गर्छ, र & ले सो भेरिएबलको ठेगाना जनाउँछ। यो नियम पालना गर्दा, scanf ले प्रयोगकर्ताको इनपुटलाई सही रूपमा प्रक्रिया गर्न सक्छ।

int num;
scanf("%d", &num);

यसरी, scanf ले प्रोग्रामलाई इनपुट प्रदान गर्छ र सो डाटालाई प्रयोगयोग्य बनाउँछ।

2. सामान्यतया प्रयोग हुने फर्म्याट स्पेसिफायर्स

  • %d : इन्टिजरको लागि
  • %f : float प्रकारको फ्लोटिङ‑प्वाइन्ट नम्बरको लागि
  • %lf : double प्रकारको डबल‑प्रिसिजन फ्लोटिङ‑प्वाइन्ट नम्बरको लागि
  • %s : स्ट्रिङको लागि (ह्वाइटस्पेसले समाप्त हुने)
  • %c : एकल क्यारेक्टरको लागि
double val;
scanf("%lf", &val);
侍エンジニア塾

3. एकै साथ बहु इनपुटहरू प्रोसेस गर्ने तरिका

int age;
float height;
scanf("%d %f", &age, &height);
printf("Age: %d, Height: %.2fn", age, height);

4. इनपुट भ्यालिडेसन र एरर ह्यान्डलिङ

int age;
printf("Please enter your age (0–120): ");
if (scanf("%d", &age) == 1 && age >= 0 && age <= 120) {
    printf("The entered age is %d years.n", age);
} else {
    printf("Invalid age.n");
}

5. इनपुट स्ट्रिम सफा गर्ने

scanf प्रयोग गर्दा “पहिलेको इनपुट बाँकी छ” जस्तो लाग्न सक्छ। यो कारण हो कि न्यूलाइन क्यारेक्टरहरू (\n) आदि इनपुट स्ट्रिममा बाँकी रहन्छन्।

scanf("%*[^n]");
scanf("%*c");

यसले इनपुट बफरमा बाँकी रहेका कुनै पनि न्यूलाइन वा अन्य क्यारेक्टरहरूलाई स्किप गर्न मद्दत गर्छ। तर लूप प्रोसेसिङ गर्दा गैर‑मानक fflush(stdin) प्रयोग नगर्नुहोस्, र माथि उल्लेखित विधिहरू प्रयोग गरेर सुरक्षित रहनुहोस्।

6. सामान्य त्रुटिहरू र उत्तम अभ्यासहरू

  • फर्म्याट स्पेसिफायर मिलाउनु: डाटा प्रकार र स्पेसिफायर मिलाउनुस्
  • स्ट्रिङ लम्बाइमा सावधानी: %s प्रयोग गर्दा बफर साइजको ख्याल राख्नुस्
  • स्ट्रिम सफा गर्नु: न्यूलाइन क्यारेक्टरहरू बाँकी नछोड्नुस्

7. उन्नत प्रयोग | परिष्कृत scanf प्रविधिहरू

char name[20];
printf("Please enter your name: ");
scanf("%19s", name);  // buffer-safe measure
printf("Hello, %s!n", name);

सारांश

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