【发布时间】:2012-05-15 13:01:00
【问题描述】:
我正在尝试解析包含固定列数的整数的文本。例如,我的输入文件可能如下所示:
=1=2=3
=4=5=6
=8=910
= 符号表示输入中的空格。 等号不在输入文件中;我只是为了说明的目的把它放在那里。每个整数都包含在没有零填充的两列中,所以第三行不是错字:它是 8、9 和 10。
标准sscanf 不起作用,因为它先消除空格,然后再应用格式字符串。例如,我试过:
sscanf(buf, "%2d%2d%2d", &int1, &int2, &int3)
但它最终将第三行解析为 8、91 和 0。
有没有办法做到这一点,而无需手动逐列提取数据?
【问题讨论】:
-
我正在与之交互的系统正在生成的自定义格式。不幸的是,无法控制它:/
-
你不应该假设你有 3 个号码和
"%2d%2d%2d"。 -
如果你不介意我说,那是一种糟糕的格式。我认为您将不得不逐列进行操作。在执行
sscanf()之前,您是否尝试过将所有 '=' 替换为 '0'? -
我编辑了问题以澄清等号实际上不在输入中。对此感到抱歉。
-
@madper:输入保证有三个整数。另外,我检查了 scanf 的结果,以确保我读取了正确数量的输入。