【发布时间】:2016-10-19 22:35:00
【问题描述】:
我有一个格式如下的输入文件
i 176064 Patterson Denise 8.58 11 DEN 15788
q 188464
ra 148702 167443
a 73131
d 163464
f 6.00
ct 73131 PHY
b 3
p 15703
pe
m 144626 6.51 8
e
每行中的第一个字符[i,q,ra,a...] 代表一个函数的代码,而其余的是我必须存储到变量中的值,具体取决于该代码。实现这一目标的最佳方法是什么?我一直在考虑使用 fscanf 但是每一行都没有特定的格式,格式本身取决于代码 [i,q,ra,a,b..]
【问题讨论】:
-
与
strtok。阅读带有fgets的行并检查每个令牌,以决定如何继续。 -
无论做什么,都不要使用 fscanf 之类的东西。绝对是错误的工作工具。
-
请注意,有些“代码”是多字母代码,因此它是第一个“单词”而不是“第一个字符”代表函数的代码。由于
scanf()系列函数不关心行,因此您不能使用它们来进行文件输入。您需要阅读这些行(例如fgets())然后分析它们(sscanf()可能没问题 - 检查Usingsscanf()in a loop,例如)。