Почему fscanf не работает должным образом для последующих вызовов? - PullRequest
1 голос
/ 12 сентября 2011
char s[20];
fscanf(stream, "%s", s);

Я обнаружил, что он может работать только в первый раз, последующие вызовы не будут выполнены.

(gdb) p fscanf(stream, "%s", s)
$15 = 1
(gdb) p (char *)s
$17 = 0x7fffffffe770 ""

Из приведенного выше видно, что fscanf соответствует 1 символу, но не сохраняетсяв s?

ОБНОВЛЕНИЕ

Есть ли способ получить соответствующее имя файла FILE*?

содержимое файла:

a
abc
b
c
e
f
h
hi

1 Ответ

3 голосов
/ 12 сентября 2011

fscanf и др. возвращает количество преобразованных элементов , а не количество байтов или символов. Таким образом, вы успешно конвертируете один элемент , в данном случае строку, которая оказывается пустой ("").

...