字符串函数---atof()函数具体解释及实现(完整版)

atof()函数

atof():double atof(const char *str );

功 能: 把字符串转换成浮点数

str:要转换的字符串。

返回值:每一个函数返回 double 值。此值由将输入字符作为数字解析而生成。 假设该输入无法转换为该类型的值,则返回值为 0.0。

函数说明 :atof()会扫描參数nptr字符串,跳过前面的空格字符。直到遇上数字或正负符号才開始做转换。而再遇到非数字或字符串结束时(‘\0‘)才结束转换,并将结果返回,str字符串可包括正负号、小数点或E(e)来表示指数部分。

#include<iostream>

using namespace std;

double atof_my(const char *str)
{
	double s=0.0;

	double d=10.0;
	int jishu=0;

	bool falg=false;

	while(*str==‘ ‘)
	{
		str++;
	}

	if(*str==‘-‘)//记录数字正负
	{
		falg=true;
		str++;
	}

	if(!(*str>=‘0‘&&*str<=‘9‘))//假设一開始非数字则退出。返回0.0
		return s;

	while(*str>=‘0‘&&*str<=‘9‘&&*str!=‘.‘)//计算小数点前整数部分
	{
		s=s*10.0+*str-‘0‘;
		str++;
	}

	if(*str==‘.‘)//以后为小树部分
		str++;

	while(*str>=‘0‘&&*str<=‘9‘)//计算小数部分
	{
		s=s+(*str-‘0‘)/d;
		d*=10.0;
		str++;
	}

	if(*str==‘e‘||*str==‘E‘)//考虑科学计数法
	{
		str++;
		if(*str==‘+‘)
		{
			str++;
			while(*str>=‘0‘&&*str<=‘9‘)
			{
				jishu=jishu*10+*str-‘0‘;
				str++;
			}
			while(jishu>0)
			{
				s*=10;
				jishu--;
			}
		}
		if(*str==‘-‘)
		{
			str++;
			while(*str>=‘0‘&&*str<=‘9‘)
			{
				jishu=jishu*10+*str-‘0‘;
				str++;
			}
			while(jishu>0)
			{
				s/=10;
				jishu--;
			}
		}
	}

    return s*(falg?-1.0:1.0);
}

int main()
{
	char *s1="  123.456567567e-10";
	char *a1="  123.456567567e-10";

	char *s2="1234567.235e+10";
	char *a2="1234567.235e+10";

	char *s3="  123.45656\07567e-10";
	char *a3="  123.45656\07567e-10";

	double sum_1=atof_my(s1);
	double sum1=atof(a1);

	double sum_2=atof_my(s2);
	double sum2=atof(a2);

	double sum_3=atof_my(s3);//遇到‘\0‘结束
	double sum3=atof(a3);

	cout<<"atof_my:"<<sum_1<<endl;
	cout<<"atof   :"<<sum1<<endl;

	cout<<"atof_my:"<<sum_2<<endl;
	cout<<"atof   :"<<sum2<<endl;

	cout<<"atof_my:"<<sum_3<<endl;
	cout<<"atof   :"<<sum3<<endl;

	system("pause");
	return 0;
}

执行结果比較图:

时间: 2024-10-24 17:27:16

字符串函数---atof()函数具体解释及实现(完整版)的相关文章

字符串常用-----atof()函数,atoi()函数

头文件:#include <stdlib.h> 函数 atof() 用于将字符串转换为双精度浮点数(double),其原型为:double atof (const char* str); atof() 的名字来源于 ascii to floating point numbers 的缩写,它会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果

字符串函数---atof()函数详解及实现(完整版)

atof()函数 atof():double atof(const char *str ); 功 能: 把字符串转换成浮点数 str:要转换的字符串. 返回值:每个函数返回 double 值,此值由将输入字符作为数字解析而生成. 如果该输入无法转换为该类型的值,则返回值为 0.0. 函数说明 :atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回,str字符串可包含正负号.小数点或E(e)来

字符串函数---memcpy()详解及实现(完整版)

一.memcpy()函数详解 1.函数原型 memcpy():void *memcpy(void *dest,const void *src,size_t count); dest:新缓冲区. src:复制的缓冲区. count:要复制的字符数. 说明:如果源和目标字符串重叠,则 memcpy 的行为未定义.(来自与msdn上面的解释) 2.对memcpy()函数的测试 (1)通过以下例子可以看到,memcpy()函数将数组a前9个字符拷贝给了数组b,数组b后面没有加'\0',故一般要记得对数组

C语言atof()函数:将字符串转换为double(双精度浮点数)

头文件:#include <stdlib.h> 函数 atof() 用于将字符串转换为双精度浮点数(double),其原型为:double atof (const char* str); atof() 的名字来源于 ascii to floating point numbers 的缩写,它会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果

atof函数的自实现

atof函数,用于将字符串参数转化为浮点型 /*  系统:linux  自实现atof函数,主函数用于参数合法化的判断,若合法则调用子函数,否则退出  此程序包含两种算法的atof实现,均有效 */ #include <stdio.h> #include <string.h> float str_to_float(char *str); float str_to_float1(char *str); int main(int argc, char* argv[]) {     /*

UVA 465-- Overflow (atof 函数)

 Overflow  Write a program that reads an expression consisting of two non-negative integer and an operator. Determine if either integer or the result of the expression is too large to be represented as a ``normal'' signed integer (type integer if you

C语言中的system函数參数具体解释

http://blog.csdn.net/pipisorry/article/details/33024727 函数名: system 功   能: 发出一个DOS命令 用   法: int system(char *command); system函数已经被收录在标准c库中,能够直接调用 system()函数用于向操作系统传递控制台命令行,以WINDOWS系统为例,通过system()函数运行命令和在DOS窗体中运行命令的效果是一样的,所以仅仅要在运行窗体中能够使用的命令都能够用SYSTEM(

postgresql--与字符串相关的函数和操作符

楔子 我们在筛选数据的时候,很多时候要对字符串进行一些处理,下面来看看postgresql支持哪些字符串的操作吧 数据集如下 select * from t; 支持字符串操作的函数或者操作符 || 将多个字符串进行拼接 -- 需要注意的是,在pgsql中,所有的字符串都必须用单引号,双引号的话会被解释为字段 -- 为什么这么设计,是因为在pgsql中存在着大小写的问题,不管你查询的时候字段是大写还是小写,pgsql都会给你转成小写 -- 可如果这个时候表中的字段是大写的话,那么就会报出字段不存在

LoadRunner函数大全之中文解释

LoadRunner函数大全之中文解释