标签: 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?
fscanf
1
s
更新
有没有办法获得FILE*的相应文件名?
FILE*
文件内容:
a abc b c e f h hi
答案 0 :(得分:3)
fscanf et al返回已转换的项的数量,而不是字节数或字符数。所以你成功转换了一个项,在这种情况下是一个字符串,恰好是空的("")。
""