How to insert Formatted Input in C Language?

Formatted Input in C Language: scanf()printf() Functions के साथ हम कुछ Flags का प्रयोग करके Formatted या मनचाहे प्रकार में मान Input कर सकते हैं व Output में मनचाहे रूप में परिणाम प्रिंट कर सकते हैं। ये काम Control Strings के मध्य कुछ Flags को Use करके किया जाता है और ये Flags सभी प्रकार के Control Strings चाहे वह Integer के लिये हो, Float के लिये हो या Char या String के लिये हो, सभी के साथ प्रयोग किया जा सकता है। इस प्रकार Control Strings के बीच Flags निम्न सुत्र द्वारा लगाए जाते हैं:

%Flage Type Specifier ( Control String )
Flage   =    w.d

यहां w एक पूर्णांक संख्‍या है, जो Input किये जाने वाले अंकों की संख्‍या बताती कि कितने अंकों तक मान Input होकर उस Identifier में जाएगा जिसका Address दिया गया है और .d यह बताता है कि दशमलव के बाद कितने अंक Store होंगे। d एक अंक होता है। Type Specifier, Input किये जा रहे Data का प्रकार बताता है। इसे समझने के लिये निम्न प्रोग्राम देखें:

#include <stdio.h>
#include <conio.h>

main()
{
int a, b, c;
clrscr();

printf(“Enter Three Integers”);
scanf(“%2d %4d %3d”, &a, &b, &c);

printf(“nThe Value of First Integer is %d ” , a );
printf(“nThe Value of Second Integer is %d” , b );
printf(“nThe Value of Third Integer is %d” ,c );
getch();
}

इस प्रोग्राम में हम प्रथम Identifier a में दो अंको तक की संख्‍या Store कर सकते हैं। b में चार अंको व Identifier c में तीन अंकों तक का Store कर सकते हैं। ये प्रोग्राम बना कर रन करें और निम्न संख्‍याऐं Input करें:

12
3456
78

Output :
The Value of First Integer is 12
The Value of Second Integer is 3456
The Value of Third Integer is 78

यह वही Output है, जो हमने Input किया था। लेकिन यदि Input किए जा रहे मानों के क्रम को निम्नानुसार कर दें, तो हमें Output गलत प्राप्त होता हैः

1234
12
233

जब हम ये मान Input करने की कोशिश करते हैं, तो Program हमसे केवल दो ही Input लेता है, तीसरा मान 233 Accept करने से पहले ही प्रोग्राम निम्न परिणाम दे देता हैः

The Value of First Integer is 12
The Value of Second Integer is 34
The Value of Third Integer is 12

हम देखते हैं कि तीसरा मान हमने Input नहीं किया था फिर भी हमें परिणाम में 12 प्राप्त हो रहा है। ऐसा क्यों हुआ?

हमने Value Input करने में Formatted Input का प्रयोग किया है, यानी %2d का प्रयोग करके प्रोग्राम कंट्रोल को बताया है कि प्रथम Identifier a में केवल दो अंकों तक का ही मान Store होगा और हमने इसमें चार अंकों की संख्‍या को Input कर दिया है। इसलिये “C” Compiler दो अंकों तक के मान को Variable a में Store कर देता है और शेष रहे 34 को दूसरे Variable b में Store कर देता है।

चूंकि हमने %4d Flag द्वारा “C” Compiler को बताया है कि दूसरे Variable में चार अंकों तक का मान Store होगा, लेकिन फिर भी इस Variable में केवल बचे हुए दो ही अंक Store हुए हैं। ऐसा इसलिये हुआ है, क्योंकि scanf() Function Space या Enter Key के मिलते ही Terminate हो जाता है, और 1234 के बाद हमने Enter Key को Press किया है। इसलिये बचा हुआ 34 दूसरे Variable को मिल गया।

दोनों Variables को मान मिल जाने के बाद दिया जाने वाला दूसरा मान तीसरे Variable को मिल जाता है, और Program हमसे Input करने के लिये तीसरा मान नहीं मांगता, बल्कि सीधे ही Output दे देता है। ऐसा इसलिये होता है, क्योंकि अब किसी भी अन्य Variable के लिये मान Accept होना बाकी नहीं रह जाता है।

इस तरह हमें उपरोक्त मान परिणाम के रूप में प्राप्त होते हैं। इस प्रक्रिया का प्रयोग करके हम यह निश्चित कर सकते हैं कि किस Variable में किस संख्‍या तक मान को Input किया जा सकता है।

इसी प्रोग्राम में हम एक और Concept Use कर सकते हैं। जब किसी Control String के साथ * का प्रयोग किया जाता है, तब Compiler उस Control String के लिए Keyboard से आने वाले मान को Neglect कर देता है और अगले मान को दूसरे वेरियेबल में Store कर देता है। तीसरे Variable में Garbage Value आ जाती है। इसी प्रोग्राम को दूसरे तरीके से Use करके नया प्रोग्राम बनाते हैं। इस प्रोग्राम में हमने दूसरे वेरियेबल में Control String के साथ * का प्रयोग किया है। इस प्रोग्राम को रन करें और निम्न मान Input करें:

111
222
333

#include <stdio.h>
#include <conio.h>

main()
{
int a, b, c;
clrscr();

printf(“Enter Three Integers”);
scanf(“%d %*d %d”, &a, &b, &c);

printf(“nThe Value of First Integer is %d ” , a );
printf(“nThe Value of Second Integer is %d” , b );
printf(“nThe Value of Third Integer is %d” ,c );
getch();
}

Output
Value of First Integer is 111
Value of Second Integer is 333
Value of Third Integer is 2344

ध्यान दें कि हमने दूसरे Variable का मान 222 दिया था व 333 तीसरे Variable को दिया था लेकिन दूसरे Variable का मान 333 हो गया व तीसरे Variable में वह मान प्राप्त हुआ जो हमने कभी दिया ही नहीं है। ऐसा दूसरे Variable के Control String के साथ * का प्रयोग करने के कारण हुआ है। जब किसी Control String के साथ * Flag का प्रयोग किया जाता है, तब C Compiler उस Variable के लिये Keyboard से Input होने वाले मान को Neglect कर देता है और जो अगला मान, अगले Variable के लिये Input किया जाता है वह मान पिछले Variable को Assign हो जाता है। इस प्रोग्राम में तीसरे Variable के लिये कोई मान नहीं बचा इसलिये Compiler ने Memory की Garbage Value को इसमें Store करके दिखा दिया।

#include <stdio.h>
#include <conio.h>

main()
{
int a, b, c, x, y;
int p, q, r;
clrscr();

printf("Enter three integer number n");
scanf("%d %*d %d", &a, &b, &c);
printf("%d %d %d", a, b, c);
printf("nn Enter two 4-digit number n");
scanf("%2d %d ",&x, &y);
printf("n %d %d", x, y);
printf(" Enter two integersn");
scanf("%d %d", &a, &x);
printf("%d %d nn", a, x);
printf("Enter a nine digit number n");
scanf("%3d %4d %3d ",&p, &q, &r);
printf("%d %d %d" ,p, q, r);
printf("Enter two three digit number n");
scanf("%d %d", &x, &y);
printf("%d %d" ,x ,y);

getch();
}

Output:
Enter three integer number
1 2 3
1 3 –3577

Enter two 4-digit number
6789 4321
67 89

Enter two integers
44 66
4321 44

Enter a nine digit number
123456789
66 1234 567

Enter two three digit number
123 456
89 123

#include <stdio.h>
#include <conio.h>

main()
{
int a, b, c, tot;

printf("nEnter 5-digit first number:");
scanf("%2d ",&a);
fflush(stdin);

printf("n Enter 4-digit second number:");
scanf("%3d",&b);
fflush(stdin);

printf("n Enter 2-digit third number:");
scanf("%4d",&c);
fflush(stdin);

tot=a + b + c;

printf("n First value is % d" ,a);
printf("n Second value is % d" ,b);
printf("n Third value is % d" ,c);
printf("n Total of three values is %d" ,tot);
getch();
}

Output:
Enter 5-digit first number:12345
Enter 4-digit second number:5678
Enter 2-digit third number:23
First value is 12
Second value is 568
Third value is 23
Total of three values is 603

इस प्रोग्राम में हमने एक नए Function fflush(stdin) का प्रयोग किया है। ये Function Keyboard से Input किए जाने वाले मान से बचे मान को, जो कि Memory में रह जाता है, साफ करने का काम करता है। यानी जैसे हमनें printf(“\nEnter 5-digit first number:”); Statement द्वारा मान मांगा और scanf(“%2d “,&a); Statement द्वारा Keyboard से प्राप्त मान को Variable a को दिया, तो Variable a को केवल आगे के दो अंक ही प्राप्त होंगे। शेष अंक Memory में पडे रहेंगे। fflush(stdin) Function Memory में पडे इन अंकों को साफ कर देता है।

fflush(stdin) जैसे ही और भी बहुत सारे Functions हैं, जिन्‍हें अलग-अलग प्रकार की जरूरतों को पूरा करने के लिए उपयोग में लिया जाता है। साथ ही scanf() Function को विभिन्‍न प्रकार के Inputs Accept करने के लिए और भी कई तरीकों से उपयोग में लिया जा सकता है, जिसके बारे में C Programming Language in Hindi में न केवल समझाया गया है बल्कि विभिन्‍न प्रकार के Real Life Practical Examples का प्रयोग करते हुए विस्‍तार से Discuss किया गया है। (Formatted Input in C Language)

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS