Scanf() समस्या से पहले सी/सी++ printf()




output (2)

मैं सी / सी ++ में कोड के लिए ग्रहण का उपयोग कर रहा हूं और मैं कुछ आसान हो सकता है के साथ संघर्ष कर रहा हूं। नीचे दिए गए मेरे कोड में मैं printf() और scanf() बाद उपयोग करता हूं। Althougth printf स्कैनफ scanf() आउटपुट से पहले लिखा गया है। मैं here इसी तरह के मुद्दे के बारे में कुछ पता लगाने में सक्षम था। लेकिन मैं इसे हल करने में सक्षम नहीं था। कोई विचार?

कोड:

#include <stdio.h>

int main()
{
    int myvariable;

    printf("Enter a number:");
    scanf("%d", &myvariable);
    printf("%d", myvariable);

    return 0;
}

अपेक्षित उत्पादन:

Enter a number:1
1

इसके बजाय मुझे मिलता है:

1
Enter a number:1

आपका आउटपुट buffered किया जा रहा है। आपके पास 4 विकल्प हैं:

  1. स्पष्ट फ्लश

    बफर से लाभ के लिए प्रत्येक लिखने के बाद fflush और अभी भी वांछित व्यवहार / प्रदर्शन को स्पष्ट रूप से लागू करें।

    fflush( stdout );
    
  2. बफर केवल बफर लाइन-वार है

    जब आप जानते हैं कि यह केवल पूर्ण लाइनों को मुद्रित करने के लिए पर्याप्त है, तो उपयोगी

    setlinebuf(stdout);
    
  3. बफर अक्षम करें

    setbuf(stdout, NULL);
    
  4. अपने कंसोल में जो भी विकल्प मेनू प्रदान करता है उसके माध्यम से बफरिंग अक्षम करें

उदाहरण:

विकल्प 1 के साथ आपका कोड यहां दिया गया है:

#include <stdio.h>
int main() {

    int myvariable;

    printf("Enter a number:");
    fflush( stdout );
    scanf("%d", &myvariable);
    printf("%d", myvariable);
    fflush( stdout );

    return 0;
}

यहां 2 है:

#include <stdio.h>
int main() {

    int myvariable;

    setlinebuf(stdout);    

    printf("Enter a number:");
    scanf("%d", &myvariable);
    printf("%d", myvariable);

    return 0;
}

और 3:

#include <stdio.h>
int main() {

    int myvariable;

    setbuf(stdout, NULL);     

    printf("Enter a number:");
    scanf("%d", &myvariable);
    printf("%d", myvariable);

    return 0;
}

ठीक है, तो आखिरकार मैंने कुछ ऐसा इस्तेमाल किया जो @zsawyer ने लेबल 3 के विकल्प के रूप में लिखा था। मेरे कोड में मैंने इस पंक्ति को डाला:

setvbuf(stdout, NULL, _IONBF, 0);

मुख्य () में पहली पंक्ति के रूप में:

#include <stdio.h>

int main()
{
    setvbuf(stdout, NULL, _IONBF, 0);

    int myvariable;

    printf("Enter a number:");
    scanf("%d", &myvariable);
    printf("%d", myvariable);

    return 0;
}

मैं इसे here से मिला।







scanf