【发布时间】:2017-12-28 07:02:03
【问题描述】:
我有一个"a b.c d.e"(不包括引号)形式的输入,我想解析成整数值,例如a1=a, a2=b, a3=c,..等等。但诀窍是"." 之后的值也可能丢失,因此"a b d.e"、"a b c"、"a b.c d" 是有效输入。但是"a b. d.e" 无效,因为在"b" 之后有一个"." 但后面没有数字。假设数字即。 "a", "b"等是大于0小于1000的整数。
我只能想办法做到这一点。试过这个 ->
scanf("%d %2d[^. ].%2d[^. ] %2d[^. ].%2d[^\n]",&a,&b,&c,&d,&e);
但它没有工作。感谢您使用scanf() 参数技巧解析它的任何帮助。
【问题讨论】:
-
请选择你的毒药 - C 或 C++ - 两种不同的语言
-
应该
%2d是%3d? -
也许给我们一些不起作用的示例输入会有所帮助
-
使用适当的词法分析器和解析器或正则表达式库。请避免使用
scanf。 -
正确阅读 strtok 的描述,您可以同时对两者进行标记“.”,然后使用 ptr2 = strtok(0," .");找到下一个命中。
标签: c parsing user-input scanf