【发布时间】:2014-05-24 09:27:03
【问题描述】:
我正在尝试将我的输入与 3 种变量类型匹配:整数、浮点数和字符串。
char *input = "1 5.456 oxygen\0";
int i = sscanf(input, "%d %f %[^\0]", &id, &dens, name);
if (i != 3)
break;
如果输入确实包含所有这 3 种类型,这将非常有用,并且我使用 sscanf 返回的值来检查这一点。
但如果输入缺少开头的整数如:
char *input = " 5.456 oxygen\0";
变量 i 仍将等于 3,因为 sscanf 会将 id 与 5 匹配,将 dens 与 .456 匹配。
使用 sscanf 的最佳方法是什么,以便它检查所需类型之间的空格(至少一个或多个空格)。
【问题讨论】:
-
没有最好的方法使用
scanf()。最好的选择是使用fgets()和解析器(可以像strtol()、strtod()、strcpy()一样简单)。