2017-02-14 12 views
5

मैं सी प्रोग्रामिंग के लिए नया हूं, मैंने सी
में एक सरल कैलकुलेटर प्रोग्राम बनाया है प्रोग्राम प्रोग्राम चलाता है लेकिन काम नहीं करता है, यह तब तक काम करता है जब b के लिए मूल्य तब तक दर्ज किया जाता है जब चरित्र इनपुट आता है नहीं पूछता इनपुट के लिए। मुझे नहीं पता कि यह क्यों हो रहा है लेकिन क्या कोई फिक्स है?मेरे सी प्रोग्राम में चरित्र इनपुट त्रुटि?

#include <stdio.h> 
int main() 
{ 
    float a,b; 
    char op; 
    printf("enter a: "); 
    scanf("%f",&a); 
    printf("enter b: "); 
    scanf("%f",&b); 
    printf("enter operation: "); 
    scanf("%c",&op); 
    switch(op) 
    { 
     case '+': 
      printf("\n%.2f %c %.2f = %.2f",a,op,b,a+b); 
      break; 
     case '-': 
      printf("\n%.2f %c %.2f = %.2f",a,op,b,a-b); 
      break; 
     case '*': 
      printf("\n%.2f %c %.2f = %.2f",a,op,b,a*b); 
      break; 
     case '/': 
      printf("\n%.2f %c %.2f = %.2f",a,op,b,a/b); 
      break; 
     default: 
      printf("invallid input!!"); 
    } 
    return 0; 
} 

कार्यक्रम बिल्कुल सही प्रतीत हो रहा है, लेकिन अभी भी वहाँ कुछ मुझे याद आ रही है:

यहाँ मेरी कोड है। उत्तर की सराहना की जाती है।

उत्तर

3

बस अपने प्रवेश आपरेशन के scanf() समारोह के चरित्र फॉर्मेट स्पेसिफायर से पहले एक अंतरिक्ष रख दिया और अपने कार्यक्रम ठीक से काम करेगा:

scanf(" %c" , &op); 
2

जब scanf() का उपयोग कर, यह इनपुट बफर में एक \n चरित्र के पीछे छोड़ देंगे । अगले scanf() इस नई लाइन को बनाए रखेगा और इसे स्टोर करेगा। या getchar() साथ बजाय चरित्र का उपभोग

scanf(" %c", &op); /* to skip any number of white space characters */ 

: आप या तो scanf() करने के लिए एक अंतरिक्ष जोड़ने की जरूरत है।

int op = getchar() 

कौन सा चरित्र op में पाया संग्रहीत करता है: समारोह getchar()int और EOF रिटर्न त्रुटि पर यह इस तरह से इस्तेमाल किया जा सकता। आप अपने scanf() कॉल के बाद भी getchar() जोड़ सकते हैं, जो बचे हुए \n चरित्र का उपभोग करेगा।

नोट:scanf() के परिणाम की जांच करना अच्छा अभ्यास है। आपको इसके बजाय लिखना चाहिए:

if (scanf(" %c", &op) != 1) { 
    /* oops, non character found. Handle error */ 
संबंधित मुद्दे