【C语言】编写函数实现库函数atof
2024-08-24 16:31:30
//编写函数实现库函数atof
#include <stdio.h>
#include <assert.h>
#include <ctype.h>
#include <math.h>
double calculate(const char *src, int flag)
{
double num = 0.0;
int n = 0;
int count = 0;
while (*src)
{
if ((*src >= '0') && (*src <= '9'))//推断输⼊入是否为⾮非数组字符
{
num = num * 10 + (*src - '0');
src++;
if (n)
{
count++;
}
}
else if (*src == '.')
{
n = 1;
src++;
}
else
{
num = 0;
break;
}
}
if (n)
{
num = num / powl(10,count);
}
return flag * num;
}
double str_to_int(const char *str)
{
double num = 0.0;
int flag = 1;
if (str != NULL && *str != '\0')
{
while (isspace(*str))
{
str++;
}
if (*str == '+')
str++;
else if (*str == '-')
{
str++;
flag = -1;
}
if (*str != '\0')
{
num = calculate(str, flag);
}
}
return num;
}
int main()
{
printf("%f\n", str_to_int(" +23.45"));
printf("%f\n", str_to_int(" -2.345"));
printf("%f\n", str_to_int("+234.5"));
printf("%f\n", str_to_int("-2345.44"));
printf("%f\n", str_to_int("2345"));
printf("%f\n", str_to_int("-1111.11"));
printf("%f\n", str_to_int(""));
printf("%f\n", str_to_int("123ab"));
return 0;
}
最新文章
- [NHibernate]关联映射
- 使用FastJSON,将对象或数组和JSON串互转
- MongoDB 3.0.6 安装 增删改查
- BlackJack Strategy
- android开发 BaseAdapter中getView()里的3个参数是什么意思
- 七牛云覆盖上传 php
- wikioi 1154 能量项链 (2006年NOIP全国联赛提高组)
- sql获取表字段名、描述和类型
- 寒假了,想深入学习c++
- 纯真IP数据库格式详解
- 基于335X平台的UBOOT中交换芯片驱动移植
- CentOS内网机器利用iptables共享公网IP上网
- PHP内置的预定义常量大全
- css - 兼容适配坑点总结(。。。)
- ubuntu各类问题笔记
- poj3352 Road Construction &; poj3177 Redundant Paths (边双连通分量)题解
- SpringBoot相知
- xcode 4.6 破解及真机调试
- Angular: Can&#39;t bind to &#39;ngModel&#39; since it isn&#39;t a known property of &#39;input&#39;问题解决
- ajax的post请求方式