首页 > 解决方案 > sscanf: %* 不会忽略空字段

问题描述

从文件中读取一行,使用 sscanf%*忽略这样的不需要的字段

int count = sscanf(linha,
                       "%*[^\t]\t%4[^\t]"
                       &livro->area);

仅在字段有字符时有效, "20/out/17\tINF\t" 但在要忽略的字段为空时无效"\tINF\t"

有人可以向我解释为什么会这样,如果为空,我如何让它也忽略它?提前致谢

标签: cscanfc11

解决方案


说明符的描述%[...](强调添加):

匹配一组预期字符(扫描集)中的非空字符序列。

所以它永远不会匹配一个空字符串。

也许你应该使用strtok()而不是sscanf().


推荐阅读