【发布时间】:2018-02-12 18:31:01
【问题描述】:
如何使用 sscanf 检查字符串中的数字。我尝试了以下示例,它是可行的,但是我想知道如何包含带有点甲的数字,例如 3.6 和负号
#include <stdio.h>
int main() {
char * string = "xx=3300 rr=3.6 zz=-0.8";
int val;
if(sscanf(string, "%*[^0123456789]%d", &val)==1)
printf("%d\n", val);
else
printf("not found\n");
return 0;
}
【问题讨论】:
-
您打算如何在像
val这样的int值中表示像3.6 这样的数字?似乎您应该为您的值和相应的格式说明符使用浮点类型(float或double)。 -
不要使用scanf。使用
strchr扫描等号,然后使用strtod将后面的内容转换为浮点数。 -
如果
string以整数开头,sscanf(string, "%*[^0123456789]%d", &val)将不会返回 1,因为"%*[^0123456789]"在继续"%d"之前强制要求至少 1 个匹配字符。 -
数字文本仅紧跟在
'='之后还是可能出现在字符串的其他位置?