例子里的函数在头文件里有声明过,如果想试一下的话还是改成别的函数名好点(我猜的),这个函数我还没试过。
首先是用isspace函数跳过空白符,(isspace函数的功能就是判断是否是空白符,如果是则返回的是非零,判断为真。如果不是则返回0,判断为假。所以第一个for循环用!isspace函数进行判断。)然后将变量i递增,直到不是空白符为止。
for(i = 0; !isspace(s[i]); i++)
然后用sign记录下来这个数组中的元素是正数还是负数,
sign = ('-' == s[i]) ? -1 : 1;
跳过符号
if(s[i] == '-' || s[i] == '+')
i++;
然后是读入数值,这个读入数值的方式刚接触的时候感觉很新颖,但是确实是处理这种字符的比较好的方法。
用变量记录当前的数值,如果之后还有有效字符读入就*10向前进一位,然后+当前读入的字符。就是当前的数值。
for(val = 0.0; isdigit(s[i]); i++)
val = 10 * val + (s[i] - '0');
然后是处理小数点的部分,遇到小数点后指向下一元素。
if (s[i] == '.')
i++;
之后是处理小数点后的数值部分。用power记录小数点后面有几位,然后还是用val用同样的方式记录数值。
for (power = 1.0; isdigit(s[i]); i++)
val = 10.0 * val + (s[i] - '0'); //记录数值。
power *= 10.0; //循环乘以10。
然后用总的数值除以记录小数点后面共有几位的变量,然后将结果乘以记录正负符号的变量sign。并将结果返回。
return sign * val / power;
4.2返回非整型值的函数
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...