स्कैनफ़% c वर्ण स्कैन नहीं कर रहा है, लेकिन कथन को छोड़कर, ऐसा क्यों है?




char switch-statement (3)

Scanf से पहले fflush (stdin) को जोड़ने का प्रयास करें

मैंने स्विच केस स्टेटमेंट का उपयोग करते हुए एक प्रोग्राम लिखा था और इनपुट के लिए एक चार के लिए पूछा था लेकिन यह कंसोल विंडो में चारों के लिए नहीं पूछता है लेकिन इसे पूरी तरह से छोड़ देता है

int main() 
{
    float a, b, ans;
    char opr;

    printf("\nGIVE THE VALUES OF THE TWO NUMBERS\n");
    scanf(" %f %f",&a,&b);


    printf("\nGIVE THE REQUIRED OPERATOR\n");   

    //no display(echo) on the screen
    //opr = getch();
    //displays on the screen
    //opr = getche();

    scanf("%c",&opr);

    switch(opr)
    {
        case '+' :
            ans = a+b;
            printf("%f", ans);
            break;          
        case '-' :
            ans = a-b;
            printf("%f", ans);
            break;          
        case '*' :
            ans = a*b;
            printf("%f", ans);
            break;          
        case '/' :
            ans = a/b;
            printf("%f", ans);
            break;
        case '%' :
            ans = (int)a % (int)b;
            printf("%f", ans);
            break;
        default :
            printf("\nGIVE A VALID OPRATOR\n");

    }

    system("pause");        
    return 0;

लेकिन जब मैं दूसरे scanf में %c से पहले एक स्थान डालता हूं तो यह काम करता है किसी को किसी रिक्त स्थान के बारे में कुछ बता रहा था जिसे मुझे भ्रमित हुआ

उन्होंने कहा कि दूसरा scanf \n को एक चरित्र के रूप में ले रहा है और अगर मैं दूसरे scanf में %c से पहले एक स्थान रखता हूँ तो वह एक चरित्र नहीं है और क्या यह वर्ण को वर्ण के रूप में नहीं लेता है?

लेकिन इस कार्यक्रम में यह \n चरित्र के रूप में नहीं लेता है

int main() 
{
    char a;
    printf("\ngive a char\n");
    scanf("%c",&a);
    printf("%c",a);

    return 0;
}  

यह सचमुच भ्रामक है, मेरी मदद करने पर कोई मुझे गलत सीखना चाहता है।



हर बार जब आप इस प्रारूप के साथ scanf का उपयोग करें:

scanf("%c",&a); 

यह एक नई लाइन छोड़ देता है जो अगले यात्रा में खपत होगी। आपके द्वारा उल्लिखित पिछले कार्यक्रम में केवल एक "स्कैनफ़" है दूसरे scanf का उपयोग करने का प्रयास करें आपको एक ही समस्या मिल जाएगी

तो आपको लिखने के लिए सफेद स्थान से बचने के लिए:

 scanf(" %c",&opr); 

प्रारूप स्ट्रिंग से पहले स्थान को स्कैनफ़ को सफेद स्थान की उपेक्षा करने के लिए बताता है या इसका उपयोग करने के लिए बेहतर

getchar();

यह आपकी सभी नई लाइनों का उपभोग करेगा





dev-c++