C эквивалентно взгляду fstream - PullRequest
25 голосов
/ 18 января 2010

Я знаю, что в C ++ вы можете посмотреть на следующий символ, используя: in.peek();.

Как бы я поступил так, когда попытался "посмотреть" на следующий символ файла в C?

Ответы [ 3 ]

44 голосов
/ 18 января 2010

fgetc + ungetc . Может быть, что-то вроде этого:

int fpeek(FILE *stream)
{
    int c;

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

    return c;
}
9 голосов
/ 18 января 2010

Вы можете использовать getc, за которым следует ungetc

2 голосов
/ 18 января 2010

вам нужно будет реализовать это самостоятельно. используйте fread , чтобы прочитать следующий символ, и fseek , чтобы вернуться туда, где вы были до чтения

РЕДАКТИРОВАТЬ :

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