web-dev-qa-db-ja.com

fstreamのピークに相当するC

C++では、in.peek();を使用して次の文字をのぞくことができます。

Cでファイルの次の文字を「ピーク」しようとするときに、これをどのように処理しますか?

27
Anthony

fgetc + ngetc 。多分このようなもの:

int fpeek(FILE *stream)
{
    int c;

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

    return c;
}
46
ephemient

getcの後に ungetc を使用できます。

10
moonshadow

自分で実装する必要があります。 fread を使用して次の文字を読み取り、 fseek を使用して読み取る前の場所に戻ります

[〜#〜]編集[〜#〜]

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