Header Ads

ad728
  • New Updates

    Formatted Input


    Formatted Input       

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

    यहां 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

    ad728

    Post Bottom Ad

    ad728