मैं इस समस्या से आया जब मैं यह जांचना चाहता हूं कि इनपुट क्या है। यदि मैं सफलतापूर्वक एक संख्या इनपुट करता हूं तो स्कैनफ़ फ़ंक्शन 1 वापस आ जाएगा।क्या होता है जब आप 12ab जैसे स्कैनफ ("% d", और argu) इनपुट करते हैं?
int argu;
while(scanf("%d",&argu)!=1){
printf("Please input a number!\n");
}
लेकिन जब मैं यह करने के लिए एबीसीडी जैसे इनपुट बातें, पाश हमेशा के लिए जाना होगा और शीघ्र के लिए बंद नहीं: तो यहाँ मैं क्या लिखा है।
मैंने इसे ऑनलाइन देखा और पाया कि इसमें कैश के साथ कुछ करना है और मुझे इसे साफ़ करने की आवश्यकता है ताकि स्कैनफ को नया डेटा मिल सके। तो मैंने fflush की कोशिश की लेकिन यह काम नहीं किया। फिर जब 'एबीसीडी' की तरह मैं इनपुट बातें यह अच्छी तरह से काम
int argu,j;
while(scanf("%d",&argu)!=1){
printf("Please input a number!\n");
while((j=getchar())!='\n' && j != '\n');
}
और यह मेरे इनपुट के लिए संकेत:
तो मैं में देखा। लेकिन जब मैं '12ab' जैसी चीजें इनपुट करता हूं, तो यह फिर से काम नहीं करेगा।
तो क्या कोई तरीका है कि मैं स्कैनफ़ ("% d", & argu) के लिए इनपुट की जांच कर सकता हूं वास्तव में एक संख्या है और यदि कोई अन्य इनपुट के लिए संकेत नहीं है?
संपादित:
मैं जवाब को देखा और while(*eptr != '\n')
का उपयोग करके मेरी समस्या हल।
ध्यान दें कि fgets
फ़ंक्शन वास्तव में सरणी में '\ n' पढ़ता है और fget
नहीं करता है। तो सावधान रहें।
fgets (s, 10, stdin) जैसे कोड का उपयोग करें? – Gnijuohz
धन्यवाद! मुझे स्ट्रेटोल नहीं पता था। बहुत कुछ सीखा! – Gnijuohz
क्षमा करें, क्या आप 'if (eptr == NULL ||! Isspace (* eptr)) समझा सकते हैं? आपके द्वारा दिए गए कोड का उपयोग करते समय, '12 34 'जैसे इनपुट स्वीकार किए जाते हैं लेकिन वे नहीं होना चाहिए। जब मैं '1234' इनपुट करता हूं तो क्या एपीआरआर इंगित करेगा और '12ab' और '12 34 'के बारे में कैसे होगा? – Gnijuohz