2016-05-26 13 views
5

मैं सी में एक प्रोग्राम लिखते समय getchar() का उपयोग कर रहा हूं (पाठ्यक्रम में इस बिंदु पर स्कैनफ की अनुमति नहीं है।) मैं सोच रहा था कि अगर हर बार मैं इसे कॉल करता हूं तो यह अगले कॉल पर जाता है; असाइनमेंट ऑपरेशंस के दौरान। उदाहरण के लिए; मैं कंसोल से एक डबल में पढ़ने की कोशिश कर रहा हूँ; और तय करें कि उसके सामने सामने नकारात्मक संकेत है या नहीं। अगर ये हो; मैं एक परिवर्तनीय नकारात्मक 1 को असाइन करना चाहता हूं (ताकि मैं बता सकूं कि अंतिम परिणाम नकारात्मक लौटाया जाना चाहिए) और फिर मैं अपने वास्तविक डबल गणना करने के लिए अगले चरित्र पर जाना चाहता हूं और क्या नहीं। पूर्व); क्या यह हर बार जब मैं इसका उपयोग करता हूं तो अगले चार में जाता है? असाइनमेंट ऑपरेशंस के भीतर?

int x = getchar(); 
     int neg = 0; 

     if(x == '-') { 
     neg = 1; 
    x = getchar(); // will this make it so the next time I use the x   
     }   // variable it will be past the negative sign and to the 
        //first actual digit? 
+0

क्रमबद्ध करें - जैसे ही पढ़ने 'x = getchar();' निष्पादित होता है, अगली बार 'x' का उपयोग नहीं किया जाता है। –

+0

'getchar()' सहित किसी भी फ़ंक्शन के रिटर्न वैल्यू के साथ आप क्या करते हैं, इसका कोई प्रभाव नहीं पड़ता है जब आप इसे कॉल करते समय फ़ंक्शन स्वयं करता है। विशेष रूप से, एक चर के लिए वापसी मूल्य असाइन करने का कोई प्रभाव नहीं पड़ता है। ऐसे अन्य कारक हैं जो फ़ंक्शन व्यवहार को संशोधित करते हैं, जैसे कि उनके तर्कों के मूल्य, लेकिन न तो कार्य करता है और न ही उनके रिटर्न मूल्यों के साथ आप जो करते हैं उसकी परवाह करते हैं। –

उत्तर

5

हाँ, हर बार जब आप फोन getchar() यह अगले चरित्र (पढ़ा जाएगा प्रदान की है अगले चरित्र को पढ़ने के लिए)।

का हवाला देते हुए C11, अध्याय §7.21.7.6

getchar() समारोह अगले वर्ण से इनपुट धारा stdin द्वारा की ओर इशारा देता है।

मामले में कुछ भी नहीं वैध पढ़ने के लिए,

है धारा में अंत के फ़ाइल, स्ट्रीम के लिए अंत फ़ाइल सूचक सेट और getchar है है EOF देता है। यदि कोई पठन त्रुटि उत्पन्न होती है, तो स्ट्रीम के लिए त्रुटि संकेतक सेट किया गया है और getcharEOF देता है।

संबंधित मुद्दे

 संबंधित मुद्दे