c - मेरे सी प्रोग्राम में चरित्र इनपुट त्रुटि?




input char (2)

बस अपने प्रवेश प्रचालन के scanf() फ़ंक्शन के चरित्र स्वरूप विनिर्देशक से पहले एक जगह डालें और आपका प्रोग्राम ठीक काम करेगा:

scanf( " %c" , &op );

मैं सी प्रोग्रामिंग के लिए नया हूँ, मैंने सी में एक साधारण कैलकुलेटर प्रोग्राम बनाया है।
यह कार्यक्रम चलाता है लेकिन काम नहीं करता, यह तब तक काम करता है जब 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;
}

यह कार्यक्रम बिल्कुल सही लगता है, लेकिन फिर भी वहां कुछ है जो मुझे याद आ रही है। उत्तर की सराहना कर रहे हैं


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

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

या इसके बजाय चरित्र के साथ getchar() फ़ंक्शन getchar() त्रुटि पर int और EOF देता है यह इस तरह से उपयोग किया जा सकता है:

int op = getchar()

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

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

if (scanf(" %c", &op) != 1) {
    /* oops, non character found. Handle error */




char