C भाषा मा स्पेस आउटपुट गर्ने तरिका | printf र फॉर्म्याटिङ पूर्ण गाइड

目次

1. परिचय

C भाषा मा खालीस्थान आउटपुटको महत्व

C भाषा मा प्रोग्राम बनाउँदा, “खालीस्थान (स्पेस)” को आउटपुट केवल सजावट मात्र होइन। आउटपुट परिणामको स्वरूपण, पढ्न सजिलो बनाउने, डेटा प्रदर्शनको दृश्यता सुधार आदि व्यावहारिक रूपमा धेरै परिस्थितिमा आवश्यक हुन्छ। विशेष गरी तालिका स्वरूपको आउटपुट वा अंक संरेखण गर्दा, खालीस्थानको प्रयोगलाई बुझ्नु महत्त्वपूर्ण छ।

उदाहरणका लागि, धेरै संख्याहरू वा स्ट्रिङहरूलाई क्रमबद्ध रूपमा आउटपुट गर्दा, खालीस्थानलाई प्रभावकारी रूपमा प्रयोग गरेर सुन्दर आउटपुट प्राप्त गर्न सकिन्छ। उल्टो, खालीस्थानको प्रयोगमा गल्ती गरेमा, आउटपुट बिग्रिन सक्छ वा इच्छित रूप नआउन सक्छ।

अप्रत्याशित रूपमा अड्किने “खालीस्थान” को आउटपुट

C भाषा सिक्न सुरु गरेका शुरुआतीहरूका लागि, “खालीस्थानको आउटपुट” अक्सर जाल हो। केवल स्पेस आउटपुट गर्न “ ” लेखेमा काम चल्छ, तर ट्याब, संरेखण, गतिशील खालीस्थान संख्या निर्दिष्ट गर्ने जस्ता थोरै उन्नत प्रयोगहरूमा ज्ञान आवश्यक पर्छ। साथै, printf फङ्क्शनको फर्म्याट स्पेसिफायरहरू वा लूपसँग मिलाएर खालीस्थान आउटपुट गर्ने कार्यले पनि अक्सर भ्रम उत्पन्न गर्छ।

यस लेखमा सिक्न सकिने कुरा

यस लेखमा, “C भाषा खालीस्थान आउटपुट” सम्बन्धी तलका बिषयहरूलाई सरल रूपमा व्याख्या गर्नेछौं।

  • खालीस्थान अक्षरका प्रकार र प्रयोग
  • printf प्रयोग गरेर आधारभूत खालीस्थान आउटपुट
  • खालीस्थानलाई प्रयोग गरेर स्वरूपण प्रविधि
  • सामान्य त्रुटिहरू र तिनीहरूको समाधान
  • व्यावहारिक कोड उदाहरणहरू र FAQ

अबदेखि C भाषा को आउटपुट स्वरूपणमा काम गर्न चाहने वा प्रोग्रामको प्रदर्शनलाई सजिलो बनाउन चाहने सबैलाई, कृपया अन्त्यसम्म हेर्नुहोस्।

2. खाली स्थान अक्षर के हो? आधारबाट बुझौं

खाली स्थान अक्षरको परिभाषा र भूमिका

सी भाषामा “खाली स्थान अक्षर” भन्नाले, स्क्रीनमा केही पनि देखिदैन, वा स्पेसको रूपमा देखिने विशेष क्यारेक्टरलाई जनाउँछ। खाली स्थान अक्षर देखिनमा स्पष्ट नहुन सक्छ, तर स्ट्रिङको विभाजन र प्रदर्शनको स्वरूपमा ठूलो प्रभाव पार्ने अस्तित्व हो। केवल सजावट मात्र होइन, आउटपुट लेआउट निर्माण गर्ने क्रममा नियन्त्रण तत्व भन्न सकिन्छ।

सी भाषामा, तलका जस्ता खाली स्थान अक्षरहरू प्रायः प्रयोग गरिन्छ।

प्रायः प्रयोग हुने खाली स्थान अक्षरका प्रकारहरू

1. स्पेस(' '

सबैभन्दा आधारभूत खाली स्थान अक्षर हो, किबोर्डको “स्पेस कुञ्जी” द्वारा इनपुट गर्न सकिने 1 क्यारेक्टरको खाली स्थान हो। प्रदर्शनको अन्तराललाई 1 क्यारेक्टर जति खाली गर्न चाहँदा प्रयोग गरिन्छ।

printf("Hello World");  // "Hello" र "World" बीचमा एउटा खाली स्थान छ

2. ट्याब()

ट्याब भनेको, निश्चित चौडाइमा कर्सरलाई अगाडि सार्नको लागि नियन्त्रण क्यारेक्टर हो। सामान्यतया 8 क्यारेक्टरको खाली स्थानको रूपमा व्यवहार गरिन्छ, तर टर्मिनल वा एडिटरको सेटिङ अनुसार परिवर्तन हुन सक्छ।

printf("Name    Score");  // “Name” र “Score” बीचमा ट्याब खाली स्थान छ

3. लाइन ब्रेक(`

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

printf("Line 1
Line 2");  // आउटपुट दुई पङ्क्तिमा विभाजित हुन्छ

खाली स्थान अक्षरले प्रोग्राममा पार्ने प्रभाव

यी खाली स्थान क्यारेक्टरहरू कोडको कार्यनिष्पादन परिणाममा प्रत्यक्ष प्रभाव पार्छन्। उदाहरणका लागि, संख्याहरू वा स्ट्रिङको प्रदर्शन स्थान, इनपुटको विभाजन, साथै सिन्ट्याक्स विश्लेषणको व्यवहारमा पनि सम्बन्धित हुन्छ। विशेष गरी नयाँ प्रयोगकर्ताहरूलाई भ्रमित बनाउने कुरा भनेको, scanfgets जस्ता इनपुट प्रक्रिया मा खाली स्थानको ह्यान्डलिङ हो (यसबारे पछि चर्चा गरिनेछ)।

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

सारांश: खाली स्थान क्यारेक्टर “अदृश्य तर महत्वपूर्ण”

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

अर्को अध्यायमा, सी भाषामा खाली स्थान आउटपुट गर्ने सबैभन्दा आधारभूत तरिका हो printf फङ्क्शन प्रयोग गरेर खाली स्थान आउटपुटको बारेमा व्याख्या गर्नेछौं।

3. printf द्वारा खाली स्थान आउटपुट गर्ने आधारभूत

printf भने के? खाली स्थान आउटपुटको आधारभूत फङ्क्शन

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

खाली स्थान आउटपुट गर्न चाहनुहुन्छ भने पनि, printf प्रयोग गरेर सजिलै स्पेस वा ट्याब समावेश गर्ने आउटपुट सम्भव छ। तल प्रतिनिधि विधिहरू प्रस्तुत गरिएका छन्।

स्पेसलाई सिधै स्ट्रिङभित्र लेख्ने

सबैभन्दा सरल विधि भनेको डबल कोटेसनले घेरिएको स्ट्रिङभित्र स्पेसलाई सोझै लेख्नु हो।

printf("Hello World
");

यो कोडले “Hello” र “World” बीचमा १ अक्षरको स्पेस आउटपुट गर्छ। लगातार स्पेस आउटपुट गर्न चाहनुहुन्छ भने, तल देखाइएका अनुसार धेरै स्पेसहरू सम्मिलित गर्नुहोस्।

printf("Hello   World
");  // तीन स्पेस

ट्याब क्यारेक्टर () प्रयोग गरेर खाली स्थानको आउटपुट

खाली स्थानलाई ठूलो बनाउन चाहनुहुन्छ भने, ट्याब क्यारेक्टर प्रयोग गर्नु पनि एउटा उपाय हो। यसलाई प्रयोग गर्दा, वातावरण अनुसार निश्चित खाली स्थानको चौडाइ (सामान्यतया ८ अक्षर) एकै पटक सम्मिलित गर्न सकिन्छ।

printf("Name    Score
");
printf("Alice    90
");
printf("Bob    85
");

आउटपुट तल देखाइएका अनुसार हुनेछ (पढ्न सजिलो बनाउन स्वरूपित):

Name    Score
Alice   90
Bob     85

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

फर्म्याट स्पेसिफायर प्रयोग गरेर खाली स्थानको नियन्त्रण

printf को शक्तिशाली कार्यक्षमता मध्ये, फर्म्याट स्पेसिफायरको चौडाइ प्रयोग गरेर खाली स्थान सहितको स्वरूपित आउटपुट सम्भव छ।

संख्या वा स्ट्रिङको आउटपुट चौडाइ निर्दिष्ट गर्नु

printf("%5d
", 42);   // चौडाइ 5 मा दायाँतिर संरेखण (तीन खाली स्थान + 42)
printf("%-5d
", 42);  // चौडाइ 5 मा बाँया तिर संरेखण (42 + तीन खाली स्थान)

स्ट्रिङको केसमा पनि समान

printf("%10s
", "C");    // दायाँतिर संरेखित 9 खाली स्थान + "C"
printf("%-10s
", "C");   // "C" + 9 खाली स्थान

यसरी फर्म्याट चौडाइ निर्दिष्ट गरेर, प्रदर्शनको संरेखण सजिलो हुन्छ।

उदाहरण: अंक मिलानमा प्रयोग हुने खाली स्थान आउटपुट

तल बहु संख्या मिलाएर आउटपुट गर्ने उदाहरण हो।

printf("No  Score
");
printf("%-3d %5d
", 1, 100);
printf("%-3d %5d
", 2, 85);
printf("%-3d %5d
", 3, 92);

आउटपुट परिणाम:

No  Score
1     100
2      85
3      92

खाली स्थान प्रयोग गरेर स्तम्भहरूलाई व्यवस्थित गर्दा, पढ्न सजिलो र सुन्दर देखिने आउटपुट प्राप्त हुन्छ।

सारांश: printf खाली स्थान आउटपुटको आधारभूत उपकरण हो

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

4. बहु खाली स्थान आउटपुट गर्ने प्रविधि संग्रह【व्यावहारिक उदाहरणहरू सहित】

किन 「बहु खाली स्थान」 आउटपुट गर्नु आवश्यक छ?

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

for वाक्यांशले खाली स्थानलाई दोहोर्याएर आउटपुट गर्ने

परिवर्तनशील लम्बाइको खाली स्थान आउटपुट गर्न चाहँदा, सबैभन्दा लचिलो तरिका हो लूप (for वाक्य) प्रयोग गरिएको विधि

उदाहरण:5 वटा स्पेस आउटपुट गर्ने

for (int i = 0; i < 5; i++) {
    printf(" ");
}

यसरी लेखेर, स्पेसको संख्या भेरिएबल वा सर्तद्वारा समायोजन गर्न सकिन्छ, जसले व्यावहारिकता बढाउँछ।

अनुप्रयोग:इन्डेन्ट थपेर स्ट्रिङ्ग आउटपुट

int indent = 4;
for (int i = 0; i < indent; i++) {
    printf(" ");
}
printf("Hello, World!
");

आउटपुट:

    Hello, World!

printf र फर्म्याट निर्दिष्टकर्ताद्वारा खाली स्थानलाई गतिशील रूपमा नियन्त्रण गर्ने

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

उदाहरण:गतिशील रूपमा 10 अक्षरको खाली स्थान आउटपुट गर्ने

printf("%*s", 10, "");  // 10 अक्षरको बराबरको खाली स्थानहरू आउटपुट गरिनेछ

यो कोडले खाली स्ट्रिङ्ग "" लाई निर्दिष्ट चौडाइ (यहाँ 10) मा दायाँ सरेको प्रयास गर्छ, जसले 10 वटा खाली स्थान आउटपुट हुन्छ।

अनुप्रयोग:संख्याको अगाडि स्पेस घुसाएर स्वरूप बनाउने

int n = 42;
printf("%5d
", n);  // आउटपुट: 「   42」 (तीन खाली स्थान)

संख्याको सरेखिक प्रदर्शनमा पनि प्रयोग गर्न सकिन्छ, जसले तालिका स्वरूपको आउटपुटमा उपयोगी बनाउँछ।

खाली स्थान आउटपुटको लागि विशेष फङ्क्शन बनाउने

बहु स्थानमा खाली स्थान आउटपुट आवश्यक परे, समर्पित फङ्क्शन तयार गर्नु उपयोगी हुन्छ।

उदाहरण:इच्छित स्पेस संख्या आउटपुट गर्ने फङ्क्शन

void print_spaces(int count) {
    for (int i = 0; i < count; i++) {
        printf(" ");
    }
}

प्रयोग:

print_spaces(8);
printf("Indented Text
");

आउटपुट:

        Indented Text

कोडको पढ्न सजिलो हुने कारणले, व्यावहारिक रूपमा पनि प्रयोग गर्न सकिन्छ।

व्यावहारिक उदाहरण:डेटा सरेखिक प्रदर्शन

तलको उदाहरण बहु पङ्क्तिको डेटा तालिका स्वरूपमा सरेखिक बनाउन खाली स्थानको प्रयोग हो।

printf("No  Name      Score
");
printf("%-3d %-10s %5d
", 1, "Alice", 100);
printf("%-3d %-10s %5d
", 2, "Bob", 85);

आउटपुट:

No  Name      Score
1   Alice        100
2   Bob           85

सारांश:उपयोग अनुसार खाली स्थान आउटपुट विधिहरूलाई विभाजन गरौं

बहु खाली स्थान आउटपुट गर्न, तलका ३ विधिहरूलाई परिस्थितिअनुसार विभाजन गर्नु महत्त्वपूर्ण छ।

  • स्थिर स्पेस भएमा " " लाई सिधै लेख्नुहोस्।
  • परिवर्तनशील स्पेस भएमा for वाक्यांश वा print_spaces फङ्क्शन प्रयोग गर्नुहोस्।
  • फर्म्याट स्पेसिफायरले संक्षिप्त रूपमा आउटपुट चौडाइ निर्दिष्ट गर्ने विधि पनि प्रभावकारी छ।

यी प्रविधिहरूलाई सिकेर, सुसंरचित आउटपुट लेआउट स्वाभाविक रूपमा लेख्न सकिन्छ।

5. स्वरूपित आउटपुटमा खाली स्थानलाई उपयोग गर्ने तरिका

आउटपुट स्वरूपण भनेको के हो?

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

अंक संरेखण र दायाँ/बायाँ संरेखणको प्रयोग विभाजन

C भाषाको printf कार्यमा, फरम्याट स्पेसिफायरको चौडाइ सेट गरेर, अंक संरेखण र संरेखण दिशा नियन्त्रण गर्न सकिन्छ।

संख्याको दायाँ संरेखण

int score = 95;
printf("%5d
", score);  // चौडाइ 5 मा दायाँ तिर संरेखण (तीन खाली स्थान + 95)

आउटपुट उदाहरण:

   95

स्ट्रिङको बायाँ संरेखण

char name[] = "Alice";
printf("%-10s
", name);  // चौडाइ 10 मा बाँया संरेखण (Alice + 5 खाली स्थान)

आउटपुट उदाहरण:

Alice     

संयोजन गरेर तालिका स्वरूपमा

printf("%-10s %5d
", "Bob", 80);
printf("%-10s %5d
", "Charlie", 92);

आउटपुट उदाहरण:

Bob           80
Charlie       92

%*d%*s प्रयोग गरेर गतिशील स्वरूपण

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

उदाहरण: चौडाइलाई चलमा निर्दिष्ट

int width = 8;
int value = 42;
printf("%*d
", width, value);  // ८ अङ्कको चौडाइमा दायाँतिर संरेखण

आउटपुट उदाहरण:

      42

बायाँ संरेखण चाहनुहुन्छ भने - थप्नुहोस्

printf("%-*s
", width, "C");  // बायाँ-समायोजन गरेर खाली स्थान भर्नुहोस्

ट्याब र स्पेसको प्रयोग विभाजन

खाली स्थानमा स्पेस र ट्याब दुई प्रकार छन्, तर स्वरूपित आउटपुटमा स्पेसले स्थिर नतिजा प्राप्त गर्न धेरै सम्भावना हुन्छ।

ट्याबको उदाहरण (पर्यावरण अनुसार बिग्रन सक्छ)

printf("Name    Score
");

उपरोक्त जस्तै सजिलै संरेखण गर्न देखिन सक्छ, तर ट्याबको चौडाइ पर्यावरणमा निर्भर हुने कारणले प्रदर्शन बिग्रने जोखिम हुन्छ।

स्पेस प्रयोग गर्नु सुरक्षित

printf("%-10s %5s
", "Name", "Score");

यो तरिका नियन्त्रण गर्न सजिलो छ, र इच्छित देखावटलाई पुन: निर्माण गर्न सजिलो हुन्छ।

प्रायः देखिने आउटपुट स्वरूपणका ढाँचाहरू

तलका केसहरू व्यावहारिक रूपमा बारम्बार देखिने आउटपुट स्वरूपणका प्रयोग केसहरू हुन्।

डेटाको सूची प्रदर्शन

printf("No  Name      Score
");
printf("%-3d %-10s %5d
", 1, "Alice", 100);
printf("%-3d %-10s %5d
", 2, "Bob", 85);

संख्याको अंक मिलान

printf("%05d
", 42);  // शून्य भरेको 5 अङ्कको आउटपुट → 00042

शून्य भर्नु र खाली स्थान भर्नु प्रयोग गरेर, यान्त्रिक र दृश्यात्मक स्वरूपण गर्न सकिन्छ।

सारांश: स्वरूपित आउटपुट पढ्न सजिलो बनाउने पहिलो कदम

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

यहाँसम्म प्रस्तुत गरिएका प्रविधिहरू कन्सोल आउटपुट मात्र नभई, लग आउटपुट र CSV फाइल निर्माणमा पनि प्रयोग गर्न सकिन्छ। फरम्याट स्पेसिफायरको उपयोगमा निपुण भई, खाली स्थानलाई स्वतन्त्र रूपमा नियन्त्रण गर्न सिकौं।

6. खाली स्थान समावेशी स्ट्रिङ्गको ह्यान्डलिंग【इनपुट र आउटपुटको ध्यान दिनुपर्ने बुँदा】

खाली स्थान समावेशी स्ट्रिङ्ग के हो?

C भाषा मा、खाली स्थान समावेशी स्ट्रिङ्ग(उदाहरण:「Hello World」वा「My name is John」) लाई इनपुट・आउटपुट गर्दा विशेष ध्यान आवश्यक हुन्छ। विशेष गरी इनपुटको अवस्थामा、खाली स्थानले स्ट्रिङ्गलाई विभाजन गरिदिन्छ、जसले इच्छित डेटा सही रूपमा प्राप्त गर्न नसक्ने समस्या उत्पन्न हुन्छ।

यस अध्यायमा、खाली स्थान समावेशी स्ट्रिङ्गलाई सही रूपमा ह्यान्डल गर्ने प्रविधि र ध्यान दिनुपर्ने बुँदाहरू लाई व्याख्या गर्नेछौं。

scanf द्वारा इनपुट खाली स्थानमा कमजोर हुन्छ

scanf("%s", str); प्रयोग गरेर स्ट्रिङ्ग पढ्दा、खाली स्थान(स्पेस、ट्याब、नयाँ लाइन आदि)मा भेटिएपछि इनपुट समाप्त हुन्छ。

उदाहरण: इनपुट बीचमै कट्छ

char str[100];
scanf("%s", str);  // इनपुट: Hello World

यस अवस्थामा、भेरिएबल str मा केवल "Hello" सम्म मात्र रहन्छ।World लाई बेवास्ता गरिन्छ。

fgets प्रयोग गर्दा खाली स्थान समावेशी स्ट्रिङ्ग पनि प्राप्त गर्न सकिन्छ

खाली स्थान समावेशी स्ट्रिङ्गलाई सही रूपमा प्राप्त गर्न चाहनुहुन्छ भने、fgets() कार्यको प्रयोग सिफारिस गरिन्छ。

उदाहरण: fgets द्वारा एक लाइन पूर्ण रूपमा प्राप्त

char line[100];
fgets(line, sizeof(line), stdin);

fgets() ले、नयाँ लाइन वा निर्दिष्ट आकारसम्म स्ट्रिङ्ग पढ्छ। खाली स्थान समावेशी वाक्य पनि、एक लाइन पूर्ण रूपमा सुरक्षित रूपमा प्राप्त गर्न सकिन्छ।

※तर、अन्त्यमा नयाँ लाइन क्यारेक्टर समावेश हुन सक्छ कारण、आवश्यक अनुसार हटाउने प्रक्रिया गर्नु सामान्य हो।

line[strcspn(line, "
")] = ' ';  // नयाँ पंक्ति हटाउनु

gets कार्यको प्रयोग टाढा राख्नुहोस्

पहिले खाली स्थान समावेशी स्ट्रिङ्गको इनपुटमा gets() प्रयोग गरिन्थ्यो、तर यो बफर ओभरफ्लोको जोखिम भएको कारण असिफारिस गरिएको छ। वर्तमान C मानक(C11 र त्यसपछिको)मा यो हटाइएको छ। यसको सट्टा fgets() प्रयोग गरौं。

आउटपुट गर्दा विशेष प्रक्रिया आवश्यक छैन

खाली स्थान समावेशी स्ट्रिङ्गलाई आउटपुट गर्दा、विशेष प्रक्रिया आवश्यक छैन।printf() वा puts() प्रयोग गर्दा、सोझै देखाइन्छ。

उदाहरण: खाली स्थान समावेशी स्ट्रिङ्गको आउटपुट

char message[] = "Hello World with space";
printf("%s
", message);  // आउटपुट: Hello World with space

अनुप्रयोग: इनपुट र फर्म्याटिङ्गलाई संयोजन गर्ने

खाली स्थान समावेशी इनपुटलाई लिई、त्यसलाई फर्म्याट गरेर देखाउने उदाहरण प्रस्तुत गर्दछौं।

char name[100];
printf("कृपया नाम प्रविष्ट गर्नुहोस्:");
fgets(name, sizeof(name), stdin);
name[strcspn(name, "\n")] = ' ';  // नयाँ पङ्क्ति हटाउनुहोस्

printf("नमस्ते, %-20s जी!\n", name);  // बायाँ पंक्तिबद्धता

यसरी गर्दा、खाली स्थान समावेशी नामहरू पनि सही रूपमा लिई、फर्म्याट गरेर देखाउन सकिन्छ।

सारांश: खाली स्थान समावेशी स्ट्रिङ्गलाई “fgets” द्वारा सुरक्षित रूपमा ह्यान्डल गर्ने

C भाषा मा、खाली स्थान समावेशी स्ट्रिङ्गलाई ह्यान्डल गर्न scanf पर्याप्त छैन、र fgets प्रयोग गरेर सुरक्षित र सही इनपुट सम्भव हुन्छ। आउटपुटको लागि printf ले समस्या बिना प्रक्रिया गर्न सक्छ、तर इनपुटसँग जोडेर प्रयोग गर्ने अवस्था धेरै भएकोले、खाली स्थान क्यारेक्टरको समझ र सावधानीपूर्वक डिजाइन महत्त्वपूर्ण छ।

7. सामान्य त्रुटिहरू र समस्या समाधान विधिहरू

खाली स्थानहरूलाई ह्यान्डल गर्दा शुरुआतीहरूले सजिलै पर्न सक्ने जाल के हो?

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

यस अध्यायमा, खाली स्थानको आउटपुट र स्वरूपणसँग सम्बन्धित सामान्य त्रुटिहरू र तिनीहरूको समाधान लाई बिस्तारै व्याख्या गर्नेछौं।

त्रुटि 1:scanf द्वारा खाली स्थान समावेशी स्ट्रिङ सही रूपमा पढ्न नसक्ने

कारण:

scanf("%s", str); प्रयोग गरियो भने, खाली स्थान वा नयाँ लाइनले इनपुट टुक्रा टुक्रा हुन्छ, जसले गर्दा स्ट्रिङ केवल भागमै पढिन्छ।

समाधान:

fgets() प्रयोग गरेर सम्पूर्ण एक लाइन पढ्नुहोस्, आवश्यक परे newline हटाउनुहोस्।

fgets(str, sizeof(str), stdin);
str[strcspn(str, "
")] = ' ';  // नयाँ पङ्क्ति हटाउनुहोस्

त्रुटि 2:आउटपुट नतिजा संरेखित छैन

कारण:

यदि फर्म्याट स्पेसिफायरको चौडाइ उपयुक्त छैन, वा अंकहरूको संख्या असमान छ, तर %d वा %s सिधै प्रयोग गरिन्छ।

समाधान:

  • %5d वा %-10s जस्तै, आउटपुट चौडाइ स्पष्ट गर्नु
  • संख्याहरूलाई दायाँ सरेको, स्ट्रिङलाई बायाँ सरेको बनाउँदा, संरेखण सजिलो हुन्छ।
printf("%-10s %5d
", "Alice", 100);
printf("%-10s %5d
", "Bob", 85);

त्रुटि 3:ट्याब () प्रयोग गरेर संरेखण गर्ने प्रयास गर्दा बिग्रिन्छ

कारण:

ट्याब क्यारेक्टर “निश्चित चौडाइ” होइन, तर 8 क्यारेक्टरको इकाइमा स्थिती मिलाउनको लागि हो। क्यारेक्टर संख्यामा निर्भर गरी स्थिती सिफ्ट हुन सक्छ।

समाधान:

स्पेस र फर्म्याट स्पेसिफायर प्रयोग गरेर स्पष्ट रूपमा खाली स्थान नियन्त्रण गर्नु।

// ❌ अस्थिर आउटपुट
printf("Name    Score
");

// ✅ स्थिर आउटपुट
printf("%-10s %5s
", "Name", "Score");

त्रुटि 4:printf("%*s", n, "") को प्रयोगमा गल्ती

कारण:

%*s मा, स्ट्रिङमा " " (स्पेस) निर्दिष्ट गर्दा, इच्छित खाली स्थान नआउन सक्छ।

समाधान:

खाली स्ट्रिङ "" पास गरेर, n क्यारेक्टरको खाली स्थान आउटपुट गर्न सकिन्छ।

int n = 5;
printf("%*s", n, "");  // ५ वटा खाली स्थानहरू आउटपुट हुन्छन्

त्रुटि 5:शून्य भराई(%05d)र खाली स्थान भराई(%5d)को मिश्रण

कारण:

संख्याको प्रदर्शनलाई मिलाउनको लागि %05d प्रयोग गरियो, तर इच्छित भन्दा फरक “शून्य” ले भरियो।

समाधान:

  • शून्य भराई:%05d00042
  • खाली स्थान भराई:%5d42

उपयोग अनुसार फरक-फरक प्रयोग गरौं।

समस्या हुँदा जाँच सूची

  1. इनपुट प्रक्रियामाscanf प्रयोग गरिएको छैन?
  2. आउटपुटमाफर्म्याट चौडाइ स्पष्ट गरिएको छ?
  3. ट्याबको सट्टा स्पेस प्रयोग गरिएको छ?
  4. स्ट्रिङ वा संख्याहरू अपेक्षित लम्बाइमा छन् कि छैनन् (strlen() द्वारा जाँच)

उचित रूपमा समायोजन गर्दा सुन्दर आउटपुट प्राप्त गर्न सकिन्छ।

सारांश: खाली स्थान समस्या “बुझाइ” द्वारा रोक्न सकिन्छ

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

समस्या आयो भने, “किन यो खाली स्थान देखिँदैन” “कहाँ इनपुट कटेको छ” जस्ता दृष्टिकोणबाट शान्तिपूर्वक कोड पुनरावलोकन गरौं।

8. व्यावहारिक: खाली स्थानको आउटपुटलाई प्रयोग गरेर सानो कार्य (कपी OK)

व्यावहारिकमा सिक्ने खाली स्थानको आउटपुट

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

कार्य1: तालिका स्वरूपमा डेटा क्रमबद्ध गरी आउटपुट गर्ने

उद्देश्य:

बहु नाम र अंकहरूलाई तालिकाजस्तै सजिलो रूपमा क्रमबद्ध देखाउने।

नमूना कोड:

#include <stdio.h>

int main() {
    printf("%-10s %-10s %5s
", "ID", "Name", "Score");
    printf("%-10s %-10s %5d
", "S001", "Alice", 95);
    printf("%-10s %-10s %5d
", "S002", "Bob", 88);
    printf("%-10s %-10s %5d
", "S003", "Charlie", 100);
    return 0;
}

चलाउने परिणाम:

ID         Name           Score
S001       Alice             95
S002       Bob               88
S003       Charlie          100

व्याख्या:

  • %10s द्वारा स्ट्रिङको चौडाइ निर्दिष्ट गरी, बायाँ‑समरेखण(%-10s द्वारा स्वरूपण गरिन्छ।
  • %5d द्वारा सङ्ख्यालाई दायाँ‑समरेखण गरी क्रमबद्ध गरिन्छ।

कार्य2: अनुच्छेदको इन्डेन्टलाई खाली स्थानले पुन:निर्माण

उद्देश्य:

बहु‑लाइनको पाठलाई, प्रत्येकलाई निश्चित स्पेसको इन्डेन्ट लगाएर देखाउने।

नमूना कोड:

#include <stdio.h>

void print_indent(int n) {
    for (int i = 0; i < n; i++) {
        printf(" ");
    }
}

int main() {
    int indent = 4;
    print_indent(indent); printf("यो पहिलो अनुच्छेद हो。\n");
    print_indent(indent); printf("इन्डेन्ट प्रयोग गरेर ढाँचाबद्ध गरिरहेछ。\n");
    print_indent(indent); printf("खाली स्थानको आउटपुटले दृश्यता बढाउँछ。\n");
    return 0;
}

चलाउने परिणाम:

यो पहिलो अनुच्छेद हो।
    इन्डेन्ट प्रयोग गरेर फर्म्याट गर्दैछौं।
    खाली स्थानको आउटपुटले दृश्यता बढाउँछ।

व्याख्या:

  • प्रयोगकर्ता-परिभाषित फङ्क्शनले खाली स्थान आउटपुट
  • रखरखाव क्षमता र पुन:प्रयोग क्षमता उच्च भएको प्रविधि हो।

कार्य3: खाली स्थान प्रयोग गरेर सजावट सहितको शीर्षक आउटपुट

उद्देश्य:

शीर्षक अक्षरलाई केन्द्र‑समरेखण गरी, खाली स्थानले घेरिएको “सजावट प्रदर्शन” बनाउने।

नमूना कोड:

#include <stdio.h>
#include <string.h>

void print_centered(char *text, int width) {
    int pad = (width - strlen(text)) / 2;
    for (int i = 0; i < pad; i++) printf(" ");
    printf("%s\n", text);
}

int main() {
    int line_width = 40;
    printf("========================================\n");
    print_centered("== कार्यक्रम सुरु ==", line_width);
    printf("========================================\n");
    return 0;
}

चलाउने परिणाम (समरूप फन्ट सिफारिस):

========================================
            == प्रोग्राम सुरु ==
========================================

व्याख्या:

  • strlen() प्रयोग गरेर केन्द्र-समायोजनका लागि खाली स्थानको सङ्ख्या गतिशील रूपमा गणना गर्दछ।
  • प्रयोगकर्ता इन्टरफेस वा लग आउटपुटमा पनि लागू गर्न सकिन्छ।

सारांश: खाली स्थानको प्रयोग ‘आकर्षक शक्ति’ बनाउँछ

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

कृपया, कार्यस्थल वा अध्ययनमा यो प्रविधि प्रयोग गर्नुहोस्।

9. सारांश

खाली स्थान「अदृश्य तर शक्तिशाली उपकरण」

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

लेखमा सिकेको कुराको पुनरावलोकन

  • खाली अक्षरका प्रकार र तिनीहरूको भूमिका(स्पेस、ट्याब、लाइनब्रेक)
  • printf फंक्शन प्रयोग गरेर आधारभूत खाली स्थानको आउटपुट विधि
  • खाली स्थानको उपयोग गरेर स्वरूपण प्रविधि
  • खाली स्थान समावेशी स्ट्रिङको इनपुट・आउटपुट सम्बन्धी ध्यान दिनुपर्ने बुँदाहरू
  • प्रायः हुने त्रुटीहरू र तिनीहरूको कारण・उपाय
  • व्यावहारिक अभ्यास मार्फत बुझाइको दृढीकरण

खाली स्थान आउटपुट कौशल लागू गर्न सकिन्छ

यो कौशल केवल कन्सोल आउटपुटमा सीमित छैन, तलका क्षेत्रहरूमा पनि उपयोगी हुन्छ:

  • लग आउटपुटको स्वरूपण(सञ्चालनमा महत्त्वपूर्ण)
  • तालिका स्वरूप डेटा प्रदर्शन
  • CSV र टेक्स्ट फाइलको स्वरूपित आउटपुट
  • UI/UX लाई विचार गरेर टर्मिन

सुरुका सिक्नेहरू पनि、खाली स्थानको प्रयोगमा निपुण भएर、“दृश्यसम्म पनि ध्यान दिने कोड” लेख्न सक्ने प्रोग्रामर नजिक पुग्न सक्छन्。

अन्तमा:पहिलो कदम “खाली स्थानलाई सचेत रूपमा प्रयोग गर्ने” बाट

खाली स्थान, यदि सचेत नहुनु भने केवल खाली ठाउँ मात्र हो। तर, जानबुझेर प्रयोग गर्दा、पाठकलाई मैत्रीपूर्ण, व्यवस्थित आउटपुट प्रदान गर्न सकिन्छ。

कृपया、भविष्यको प्रोग्रामिङमा “खाली स्थान”लाई सचेत रूपमा प्रयोग गरी、सुन्दर कोड र आउटपुटको लक्ष्य राख्नुहोस्।

10. FAQ(बारम्बार सोधिने प्रश्नहरू)

Q1. printf द्वारा धेरै खाली स्थानहरू आउटपुट गर्न कसरी गर्न सक्छु?

A. केही तरिकाहरू छन्। सबैभन्दा सरल तरिका भनेको डबल कोटेसनभित्र धेरै स्पेस लेख्नु हो:

printf("     ");  // ५ वटा स्पेसहरू आउटपुट गर्नुहोस्

यदि गतिशील रूपमा खाली स्थानको संख्या निर्धारण गर्न चाहनुहुन्छ भने, तलको जस्तै तरिका उपयोगी हुन्छ:

printf("%*s", 5, "");  // 5 वटा खाली स्थानहरू मुद्रण गर्नुहोस्

वा, लूप प्रयोग गरेर आउटपुट गर्ने तरिका पनि छ:

for (int i = 0; i < 5; i++) printf(" ");

Q2. scanf("%s", str); द्वारा खाली स्थान समावेश गर्ने स्ट्रिङ इनपुट गर्न सकिँदैन। के गर्नुपर्छ?

A. scanf("%s", str); ले इनपुटलाई खाली स्थान (स्पेस, ट्याब, नयाँ लाइन) मा विभाजन गर्छ, त्यसैले खाली स्थान समावेश गर्ने स्ट्रिङ सही रूपमा प्राप्त गर्न सकिँदैन। त्यस अवस्थामा fgets() प्रयोग गरौं।

char str[100];
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = ' ';  // नयाँ पङ्क्ति हटाउने

यसले खाली स्थान समावेश गर्ने एक लाइनको स्ट्रिङ सुरक्षित रूपमा प्राप्त गर्न सकिन्छ।

Q3. %5d%05d को भिन्नता के हो?

A. दुवैले आउटपुट चौडाइलाई 5 अक्षरमा स्थिर बनाउँछन्, तर भरिने अक्षर फरक हुन्छ।

  • %5d → खाली स्थानले भरिएको दायाँ सरेको
  • %05dशून्यले भरिएको दायाँ सरेको

例:

printf("%5d
", 42);   // 「   42」
printf("%05d
", 42);  // 「00042」

दृश्य र प्रयोग अनुसार फरक-फरक प्रयोग गरौं।

Q4. ट्याब() र स्पेस(' ') मध्ये कुन प्रयोग गर्नु उपयुक्त छ?

A. सामान्यतया स्पेसलाई सिफारिस गरिन्छ। किनभने ट्याबको प्रदर्शन चौडाइ वातावरण अनुसार फरक पर्न सक्छ, जसले सरेको प्रदर्शन बिग्रन सक्छ।

  • सजिलो रूपमा खाली गर्न मात्र चाहनुहुन्छ भने ट्याब पनि प्रयोग गर्न सकिन्छ
  • कठोर स्वरूपण वा स्तम्भ सरेको गर्न चाहनुहुन्छ भने, स्पेस र फर्म्याट निर्दिष्टकर्ता प्रयोग गरौं।

Q5. printf("%*s", n, "") ले सही रूपमा खाली स्थान आउटपुट गर्दैन। किन?

A. यो संरचना “n अक्षरको चौडाइमा खाली स्ट्रिङ आउटपुट गर्ने” कार्य हो। यदि गल्तीले " " (स्पेस) लाई स्ट्रिङको रूपमा निर्दिष्ट गरेमा, खाली स्थान केवल 1 अक्षर मात्र आउटपुट हुन्छ।

सही प्रयोग:

int n = 5;
printf("%*s", n, "");  // 5 वटा खाली स्थानहरू आउटपुट हुन्छन्

Q6. खाली स्थान मात्र आउटपुट गर्ने फङ्क्शन बनाइरहन ठीक छ?

A. अवश्य सम्भव छ र व्यावहारिक रूपमा पनि सिफारिस गरिन्छ। बारम्बार खाली स्थान आउटपुट गर्ने अवस्थामा, विशेष फङ्क्शन तयार गर्दा पढ्न सजिलो र पुन: प्रयोगयोग्य हुन्छ।

void print_spaces(int count) {
    for (int i = 0; i < count; i++) {
        printf(" ");
    }
}

कल गर्ने उदाहरण:

print_spaces(8);
printf("Indented text
");

Q7. सरेको प्रदर्शन ठीकसँग काम गरिरहेको छैन। के कुराबाट जाँच गर्नुपर्छ?

A. तलका बुँदाहरू जाँच गरौं:

  1. फर्म्याट निर्दिष्टकर्ताको चौडाइ उपयुक्त छ कि (उदाहरण: %-10s, %5d)
  2. डेटाको अंक संख्या वा लम्बाइमा भिन्नता छ कि
  3. ट्याबको सट्टा स्पेस प्रयोग गरियो कि
  4. स्ट्रिङ वा संख्याहरू अपेक्षित लम्बाइमा छन् कि (strlen() द्वारा जाँच)

उपयुक्त रूपमा समायोजन गर्दा सुन्दर आउटपुट प्राप्त गर्न सकिन्छ।

उपरोक्त “बारम्बार सोधिने प्रश्नहरू” का उत्तरहरू हुन्। यदि यस लेखको सामग्री प्रयोग गर्नुहुन्छ भने, खाली स्थानको आउटपुट र स्वरूपण सम्बन्धी अधिकांश समस्याहरू पार गर्न सक्नुहुनेछ। कृपया वास्तविक कोडमा सक्रिय रूपमा प्रयोग गर्नुहोस्।

侍エンジニア塾