【发布时间】:2015-10-07 01:01:52
【问题描述】:
假设您有一个变量char s[30],并且s 以正浮点数开头,例如
s = "15.016This is not a part of the float !";
浮点数后面的字符可以不是数字。
目标是确定代表浮点数的字符数,例如|15.016| = 6。
我正在尝试编写一个简单的代码来做到这一点,最好没有任何外部库。
我有:
int count_len(char *s)
{
char tmp_buf[30];
int integral_digits = sprintf(tmp_buf, "%d", atoi(s) );
return integral_digits + sprintf(tmp_buf, "%d", atoi(s + integral_digits +1) );
}
这适用于任何分数不包含前导零的数字(适用于 15.16,但不适用于 15.016)。
你会如何修复这个函数?
【问题讨论】:
-
IRGS!您的 s 字符串长度超过 30!
-
你找到函数“atof()”了吗?
-
嗨@PeterMiehle - 是的,我试过了,atof,但是当你使用
atof("1.6")时,结果是1.60000001,这会破坏计数。 -
@PeterMiehle 在这种情况下,我会推荐
strtod()/strtof()而不是atof()。 :-) -
多条路通罗马
标签: c string floating-point char converter