2010-01-17 13 views
21

मुझे सी ++ में पता है, आप अगले चरित्र पर उपयोग करके देख सकते हैं: in.peek();सी fstream की चोटी के बराबर

सी में फ़ाइल के अगले चरित्र पर "चोटी" करने की कोशिश करते समय मैं इसके बारे में कैसे जाउंगा?

उत्तर

38

fgetc + ungetc के बाद इस्तेमाल कर सकते हैं । इस तरह हो सकता है कि कुछ:

int fpeek(FILE *stream) 
{ 
    int c; 

    c = fgetc(stream); 
    ungetc(c, stream); 

    return c; 
} 
+1

सशर्त अनावश्यक है: 'ungetc (EOF, foo)' अच्छी तरह से परिभाषित ("अगर ग के मूल्य के बराबर होती है कि मैक्रो EOF की, आपरेशन में विफल रहता है और इनपुट स्ट्रीम है अपरिवर्तित ") – Christoph

+0

@Christoph: यह काम है। सी में, 'EOF' किसी भी नकारात्मक पूर्णांक हो सकता है: मेरा आदमी पेज कि tidbit है, लेकिन एक मैं करता से जुड़ा हुआ ... – ephemient

+0

@emil शामिल नहीं किया। – dreamlax

2

आप इसे अपने आप को लागू करने के लिए की आवश्यकता होगी। freadfseek वापस तुम कहाँ थे पर जाने के लिए का उपयोग अगले वर्ण को पढ़ने के लिए और से पहले पढ़

संपादित:

int fsneaky(FILE *stream, int8_t *pBuff, int sz) { 
    sz = fread(pBuff, 1, sz, stream) 
    fseek(pFile, -sz, SEEK_CUR); 
    return(sz); 
} 
संबंधित मुद्दे