1
我正在寻找通过stdin
和scanf()
从用户的几个数据点中读取。多个输入格式与scanf
然而,如果用户希望指示无效数据,由*
表示,这将违反预期的格式(%f
,%d
等),并按照我的理解,导致scanf()
返回一个错误。
我设想处理这个问题的方法是从stdin
读取输入作为一系列字符串,检查它们是否为*
,然后处理这个问题。这看起来很幼稚和混乱,我想知道是否有一个更清晰的方法来实现这一点。
请注意,我的工作环境非常有限,因此POSIX /第三方解决方案不适用。 ANSI C只:(
您需要将输入读入缓冲区并尝试解析它一再重复,直到你成功。有很多关于这样做的理论,通常在“编译器”课程中介绍。如果你不想走这条路线,你可以使用'fgets'或'getline'将输入读入缓冲区,然后处理几次,看看它是如何工作的,但它会变得复杂和缓慢除非只有有限数量的可能的正确解析,否则匆忙。 – dmckee 2013-02-18 20:46:51
一个字:'fgets()'。 (好吧,也许两个'strchr()'也适用。) – 2013-02-18 21:46:10
不要使用'scanf'。 http://www.c-faq.com/stdio/scanfprobs.html – jamesdlin 2013-02-18 22:50:50