Как взглянуть на следующий символ в потоке в C? [дубликат]

Возможные Дубликаты:
C эквивалентно fstream peek

скажем у меня есть файл с символами в нем. Я хочу посмотреть на следующий символ, не перемещая указатель, просто " пик " на нем. как мне это сделать?

FILE *fp;
char c, d;

fp = fopen (file, "r");

c = getc(fp);

d = nextchar?

Как посмотреть на следующий символ, не вызывая getc снова и не перемещая указатель?

1 ответов


вы можете просто использовать getc() чтобы получить следующий символ, а затем вызов ungetc().

Update: см. комментарий @Jonathan для обертки, которая позволяет заглянуть за конец файла (returning EOF в этом случае).

обновление 2: немного более компактная версия:

int fpeek(FILE * const fp)
{
  const int c = getc(fp);
  return c == EOF ? EOF : ungetc(c, fp);
}