字符串转数字

时间:2022-03-28 16:25:56

表头文件: #include <stdlib.h>


atof()函数

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

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

str:要转换的字符串。

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

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


strtol()函数

  编辑
long int strtol(const char *nptr,char **endptr,int base);
strtol函数会将参数nptr字符串根据参数base来转换成长整型数。
参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换、遇到’0’前置字符而不是’0x’的时候会使用8进制做转换。



一 概述(使用时要包含<stdlib.h>文件,否则结果输出可能不正确):

(1)atoi

功 能: 把字符串转换成整型数。
名字来源:ASCII to integer 的缩写。
原型: int atoi(const char *nptr);
函数说明: 参数nptr字符串,如果第一个非空格字符存在,并且,如果不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。

*补充:itoa(int value,char *str,int radix)。

功能:把整型转化为字符串,value是要转换的值,str是目标字符串地址,radix是转换后的进制。


(2)atof

功 能: 把字符串转换成浮点数
用 法: double atof(const char *nptr);


(3)atol

功 能: 把字符串转换成长整型数
用 法: long atol(const char *nptr)


(4)atoll

功 能: 把字符串转换成长长整型数   
用 法: long long atoll(const char *nptr);




#include <stdlib.h>

1、strtod


double strtod(const char *nptr, char **endptr);

扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回,

返回值:返回转换后的浮点型数

#include<stdlib.h>#include<stdio.h>void main(){    char *endptr;    char a[] = "12345.6789";    char b[] = "1234.567qwer";    char c[] = "-232.23e4";    printf"a=%lf\n"strtod(a,NULL) );    printf"b=%lf\n"strtod(b,&endptr) );    printf"endptr=%s\n", endptr );    printf"c=%lf\n"strtod(c,NULL) );}
执行:
a=12345.678900b=1234.567000endptr=qwerc=-2322300.000000
2、strtol
long int strtol(const char *nptr,char **endptr,int base);

这个函数会将参数nptr字符串根据参数base来转换成长整型数。    参数base范围从2至36,或0。参数base代表采用的进制方式,    如base值为10则采用10进制,若base值为16则采用16进制等。    当base值为0时则是采用10进制做转换,但遇到如’0x’前置    字符则会使用16进制做转换、遇到’0’前置字符而不是’0x’    的时候会使用8进制做转换。一开始strtol()会扫描参数nptr    字符串,跳过前面的空格字符,直到遇上数字或正负符号才    开始做转换,再遇到非数字或字符串结束时('\0')结束转换,    并将结果返回。若参数endptr不为NULL,则会将遇到不合条件    而终止的nptr中的字符指针由endptr返回。



float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);



ANSI C 规范定义了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习;使用 atof() 与使用 strtod(str, NULL) 结果相同。另外在 C99 / C++11 规范中又新增了5个函数,分别是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介绍,请大家自行学习