2010-01-17 18 views
21

Ich weiß in C++, Sie sind in der Lage zu sehen, das nächste Zeichen mit: in.peek();.C äquivalent zu Flores Peek

Wie würde ich darüber gehen, wenn ich versuche, das nächste Zeichen einer Datei in C "zu sehen"?

Antwort

38

fgetc + ungetc gefolgt verwenden könnte . Vielleicht so etwas wie folgt aus:

int fpeek(FILE *stream) 
{ 
    int c; 

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

    return c; 
} 
+1

die bedingte unnötig ist: 'ungetc (EOF, foo)' ist gut definiert ("Wenn der Wert von c gleich der des Makro EOF, der Vorgang fehlschlägt und der Eingangsstrom unverändert ") – Christoph

+0

@Christoph: Das ist praktisch. Meine Manpage enthielt diesen Leckerbissen nicht, aber der, mit dem ich verlinkt bin, tut ... – ephemient

+0

@emil: In C kann 'EOF' eine beliebige negative ganze Zahl sein. – dreamlax

2

müssen Sie es selbst implementieren. verwenden fread das nächste Zeichen und fseek zu lesen, um zurück zu gehen, wo man vor

EDIT lesen die waren:

int fsneaky(FILE *stream, int8_t *pBuff, int sz) { 
    sz = fread(pBuff, 1, sz, stream) 
    fseek(pFile, -sz, SEEK_CUR); 
    return(sz); 
}