/ / अनंत लूप में फंस गए - सी, जबकि-लूप, फॉक्स

अनंत fgets पाश में फंस गया - सी, जबकि-लूप, fgets

मैं एक पूर्णांक इनपुट प्राप्त करने की कोशिश कर रहा हूं, और मैंने कोशिश कीसबसे प्राथमिक विधि मुझे मिल सकती है। हालाँकि, जब भी कोई चीज पूर्णांक नहीं बनती है, तो वह एक अनंत लूप में फंस जाती है। मेरा मानना ​​है कि यह फेक फेशन के कारण है। मैंने इस साइट पर कुछ समाधानों की कोशिश की, लेकिन कोई काम नहीं किया। कोड इस प्रकार है

int getint()
{
int number;
char input[4];

fgets(input, 4, stdin);
while ( atoi(input) < 0 || ( strcmp(input, "0") != 0 && atoi(input) == 0 ) )
printf("Insert a non negative number: ");
fgets(input, 4, stdin);
number = atoi(input);
printf("%dn", number);

return number;
}

उत्तर:

जवाब के लिए 0 № 1

यदि एक से अधिक कथन हैं जिन्हें आप लूप में लिखना चाहते हैं या यदि कथन है, तो आपको ब्रेस का उपयोग करना चाहिए {} परिभाषित करने के लिए कि कौन से कथन लूप में आते हैं।

आपके कोड में, केवल printf("Insert a non negative number: "); बयान लूप में है, और कुछ भी नहीं बदल रहा है input"लूप में मान है, इसलिए यदि लूप की स्थिति सच है, तो यह हमेशा सही रहेगा।

इसे यहां बदलें:

while ( atoi(input) < 0 || ( strcmp(input, "0") != 0 && atoi(input) == 0 ) )
{
printf("Insert a non negative number: ");
fgets(input, 4, stdin);
}