【发布时间】:2021-11-04 17:45:44
【问题描述】:
基本上,我的程序所做的是从用户那里获取多行输入,并在用户退出程序时显示一个图表。我遇到的问题是用户输入信息的方式有不同的变化,例如:“L 200000”或“J 3.5 12”。对于输入本身就是 scanf() 解释它的方式,我没有太多问题。我知道,如果我做了 scanf("%s" "%i", &identifier, &number) ,它对于第一个示例会工作得很好,但是一旦用户输入三个单独的值,单个 scanf() 就不再工作了。所以我的问题是,我如何让 scanf() 忽略缺失值但仍然能够将其赋予预定义变量的事实?除了scanf()还有其他方法吗?
【问题讨论】:
-
不要为此使用
scanf。它只是不太适合这样的任务。使用诸如fgets之类的替代方法来读取整行,然后使用strtok来解析每个标记。或者阅读第一个字符,它大概描述了随后的数据格式,然后可能是scanf。但仍然建议不要使用scanf,因为在任何重要的用例中都很难做到正确。 -
输入带有
fgets的行并应用sscanf调用,首先转换假定的3 个输入,然后在失败时转换2 个输入。你怎么知道它失败了?通过测试成功的转换次数(其函数返回值),这在使用任何scanf函数系列时是必不可少的。 -
请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。