Sunday, March 16.

Header Ads

Colorful+Black+Friday+Discount+Leaderboard+Ad

Formatted Input

Muscle+Inc.+%25282%2529

Formatted+Input

Formatted Input       

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

flage+Type

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

  
#include<stdio.h>
main()
{
	int a,b,c;
	
	printf("Enter Three Integer ");
	scanf("%2d %4d %3d", &a,&b,&c);
	
	printf("\n The Value of First Integer is %d",a);
	printf("\n The Value of Second Integer is %d",b);
	
	printf("\n The 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 का प्रयोग करके प्रोग्राम Control को बताया है कि प्रथम 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 कर देता है और अगले मान को दूसरे Variable में Store कर देता है | तीसरे Variable में Garbage Value आ जाती है | इस प्रोग्राम में हमने दूसरे Variable में Control String के साथ * का प्रयोग किया है | इस प्रोग्राम को रन करें और निम्न मान Input करे

 

111

222

333

 

 

  
#include<stdio.h>
main()
{
	int a,b,c;
	
	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

  
The Value of First Integer is 111
The Value of Second Integer is 333
The Value of Third Integer is 0

ध्यान दें कि हमने दूसरे Variable का मान 222 दिया  था व 333 तीसरे Variable को दिया था लेकिन दूसरे  Variable का मान 333 हो गया व तीसरे Variable में वह मान प्राप्त हुआ जो हमने कभी दिया ही नहीं है | ऐसा दूसरे Variable के Control String के साथ * का प्रयोग करने के कारण हुआ  है |

जब किसी Control String के साथ * Flage का प्रयोग  किया जाता है , तब “C” Compiler उस Variable के लिए keyboard से Input होने वाले मान को Neglect कर देता है और जो अगला मान अगले Variable के लिए Input किया जाता है वह मान पिछले Variable को Assign हो जाता है | इस Program में तीसरे Variable के लिए कोई मान नहीं बचा इसलिए Compiler ने Memory की  Garbage Value को इसमें Store करके दिखा दिया |

  
#include<stdio.h>
main()
{
	int a,b,c,x,y;
	int p,q,r;
	
	printf("\nEnter three integer number");
	scanf("%d *d %d",&a,&b,&c);
	printf("%d %d %d",a ,b,c);
	
	printf("\n\n Enter two-4-digit number\n");
	scanf("%2d %d ",&x, &y);
	printf("\n %d %d", x ,y);
	
	printf("\nEnter two Integers ");
	scanf("%d %d", &a,&x);
	printf("%d %d \n \n",a,x);
	
	printf("\nEnter a nine digit numbers ");
	scanf("%3d %4d %3d", &p ,&q , &r);
	printf("%d %d %d ", p,q,r);
	
	printf("\nEnter two three digit number ");
	scanf("%d %d", &x , &y);
	printf("%d %d ", x,y);
	
	getch();
		
}

Output

  
Enter three integer number1 2 3
1 1 0

 Enter two-4-digit number
6789 4321

 2 3
Enter two Integers 6789 4321


Enter a nine digit numbers 123456789
123 4567 89
Enter two three digit number 123 456
123 456


Another Example Program

  
#include<stdio.h>
main()
{
	int a,b,c,tot;
	
	printf("\nEnter 5-digit first number: ");
	scanf("%2d",&a);
	fflush(stdin);
	
	printf("\nEnter 4-digit second number: ");
	scanf("%3d",&b);
	fflush(stdin);
	
	printf("\nEnter 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 567
 Third Value is 23
 Total of three values is 602

 

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

 

No comments

Post Top Ad

Post Bottom Ad