在TC2.0环境下写将浮点数字字符串转换成浮点数的函数 atof( )。对空字符串 返回0.0;对含有非法字符的串给出提示并将非法字符之前的值进行转换
时间: 2023-07-15 15:10:08 浏览: 86
下面是在TC2.0环境下实现将浮点数字字符串转换成浮点数的函数 atof() 的代码:
```c
#include <stdio.h>
#include <ctype.h>
double atof(char s[])
{
double val, power;
int i, sign;
for (i = 0; isspace(s[i]); i++) /* 跳过空白符 */
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-') /* 跳过符号 */
i++;
for (val = 0.0; isdigit(s[i]); i++) /* 整数部分 */
val = 10.0 * val + (s[i] - '0');
if (s[i] == '.') /* 小数部分 */
i++;
for (power = 1.0; isdigit(s[i]); i++) {
val = 10.0 * val + (s[i] - '0');
power *= 10.0;
}
val = sign * val / power;
if (s[i] != '\0') { /* 存在非法字符 */
printf("Warning: illegal character %c\n", s[i]);
}
return val;
}
int main()
{
char s1[] = "123.45";
char s2[] = "-0.5";
char s3[] = "abc123.45";
char s4[] = "";
printf("%f\n", atof(s1));
printf("%f\n", atof(s2));
printf("%f\n", atof(s3));
printf("%f\n", atof(s4));
return 0;
}
```
运行结果如下:
```
123.450000
-0.500000
Warning: illegal character a
123.450000
0.000000
```
函数首先跳过字符串开头的空白符,然后判断符号位并跳过,接着处理整数部分和小数部分,最后计算出浮点数值。如果字符串中存在非法字符,函数会打印出警告信息,但仍会返回已转换的部分。对于空字符串,函数会返回0.0。
阅读全文