मैं निम्नलिखित कार्यक्रम में स्कैनफ़ के व्यवहार के बारे में उलझन में हूं। स्कैनफ एक बार इनपुट करने के लिए प्रतीत होता है, और उसके बाद फिर से इनपुट नहीं होता है, जब तक कि अक्षरों की एक धारा मुद्रित न हो जाए।स्कैनफ़ इनपुट इनपुट छोड़ने के लिए क्यों दिखाई देता है?
#include<stdio.h>
int main()
{
int i, j=0;
do
{
++j;
scanf("%d", &i);
printf("\n\n%d %d\n\n", i, j);
}
while((i!=8) && (j<10));
printf("\nJ = %d\n", j);
return 0;
}
यहाँ एक सी कार्यक्रम में नीचे, जब तक मैं किसी भी पूर्णांक कार्यक्रम inputting हूँ पूरी तरह से ठीक काम करता है, लेकिन जब एक चरित्र इनपुट किया जाता है यह तक मैं के अंतिम inputed मूल्य मुद्रण पर चला जाता है और कभी नहीं बंद हो जाता है (जेड 10 है जब लूप निकलता है) स्कैनफ के लिए अगले इनपुट लेना।
output::
1 <-----1st input
1 1
2 <---- 2nd input
2 2
a <---- character input
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
J = 10
सी ++ में भी यही बात हो रही है।
#include<iostream>
using namespace std;
int main()
{
int i, j=0;
do
{
++j;
cin>>i;
cout<<i<<" "<<j<<"\n";
}
while((i!=8) && (j<10));
cout<<"\nj = "<<j<<"\n";
}
output of c++ program ::
1 <-----1st input
1 1
2 <-----2nd input
2 2
a <------ character input
0 3
0 4
0 5
0 6
0 7
0 8
0 9
0 10
j = 10
केवल सी ++ में परिवर्तन यह है कि 0 को अंतिम मूल्य के बजाय मुद्रित किया जा रहा है।
मुझे पता है कि प्रोग्राम द्वारा पूर्णांक मानों की अपेक्षा की जाती है, लेकिन मैं जानना चाहता हूं कि जब एक पूर्णांक के स्थान पर चरित्र इनपुट किया जाता है तो क्या होता है? उपरोक्त सभी का क्या कारण है?
यह आपकी मदद कर सकता है: http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.3। अगला जवाब पृष्ठभूमि पर थोड़ा और बताता है। – chris
[scff() misbehaving के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/5062646/scanf-misbehaving) –