Итак, я получил следующий код (C):
char c = getc(in);
if (c == '(')
...
if (c == '%')
...
if (isdigit(c))
{
int n;
ungetc(c, in);
scanf("%i", &n);
...
}
Все нормально и прекрасно, когда я читаю данные ввода из stdin, но при чтении ввода данных из файла вызов scanf
не прекращается.
Я добавил код вокруг звонка, чтобы посмотреть, что происходит до звонка на scanf
. Одним из таких примеров является
c = '0'
- символ сразу после
c
равен )
Не очищается ли буфер после ungetc
или что-то еще? Что может случиться, что он работает нормально, когда ввод stdin
, но не когда это файл? (Я не очень знаком с IO в C).
править: Надо было использовать fscanf
... у мальчика красное лицо.