为什么fscanf在后续调用时没有按预期工作?

时间:2011-09-12 10:40:05

标签: c linux scanf

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 个答案:

答案 0 :(得分:3)

fscanf et al返回已转换的的数量,而不是字节数或字符数。所以你成功转换了一个,在这种情况下是一个字符串,恰好是空的("")。