如果前面的字符串为空,fscanf()无法读取数字

时间:2014-02-27 09:22:55

标签: c scanf

此代码

fscanf(f, "%[^|]|%d", text, &num)

如果文本长于0个字节,则可以工作,例如文件包含:

testtext|89

但是如果文本像这里那样是0字节长:

|89

然后fscanf读取的数字将为零! 怎么了?

2 个答案:

答案 0 :(得分:3)

根据此页面:http://www.cplusplus.com/reference/cstdio/fscanf/

  

任何说明者都应使用至少一个字符。否则匹配失败,扫描结束。

答案 1 :(得分:1)

在这种情况下,更优选使用strtok()并使用'|'作为分隔符。