(用atoi系列)字符串转化为数字(整型、浮点型)

来源:互联网 发布:java split函数最后 编辑:程序博客网 时间:2024/05/17 22:50

头文件必须包含 #include<stdlib.h>

atof()、atoi()、atol()、strtod()、strtol()、strtoul() 

(1)atof

函数 atof() 用于将字符串转换为双精度浮点数(double),其原型为:double atof (const char* str);

atof() 的名字来源于 ascii to floating point numbers 的缩写,它会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数str 字符串可包含正负号、小数点或E(e)来表示指数部分,如123. 456 或123e-2。  如果是以非数字开头,则返回0.

【返回值】返回转换后的浮点数;如果字符串 str 不能被转换为 double,那么返回 0.0。


   *d = "100.34cyuyan",
   *e = "cyuyan";


    printf("d = %.2f\n", atof(d));
    printf("e = %.2f\n", atof(e));

执行结果:
d = 100.34
e = 0.00


(2)atoi

atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi (const char * str);


【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。如果是以非数字开头,则返回0.


(3)atol

atol() 函数的名字源于“ascii to long”,用来将字符串转换成长整型数(long),其原型为:
    long atol(const char * str);

【函数说明】atol() 会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。如果是以非数字开头,则返回0.

【返回值】返回转换后的长整型数(long);如果 str 不能转换成 long 或者 str 为空字符串,那么将返回 0。

char *str1="12344444.22aa";
char *str2="aa12344444.22";
printf("%ld\n%ld\n",atol(str1),atol(str2));

输出结果:

12344444
0


(4)strtod

函数 strtod() 用来将字符串转换成双精度浮点数(double),其原型为:
double strtod (const char* str, char** endptr);

【参数说明】str 为要转换的字符串,endstr 为第一个不能转换的字符的指针。

【函数说明】strtod() 函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace()函数来检测),直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。参数 str 字符串可包含正负号、小数点或E(e)来表示指数部分。如123. 456 或123e-2。

若endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。

【返回值】返回转换后的浮点型数;若不能转换或字符串为空,则返回 0.0。

char *str3="123.54a2344";
char *pend;
char *pend2;
double a=strtod(str3,&pend);
double b=strtod(pend,&pend2);
printf("%c %c\n",*pend,*pend2);
printf("%.2f %.2f\n",a,b);

结果输出:

a a
123.54 0.00

因为检测遇到'a'后停止,所以第一个可以输出123.54,但是第二个strtod(),从‘a’开始检测,‘a’非数字符也非空白符,所以直接停止。




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 什么显示器性价比高 什么手机性价比较高 便宜性价比高的手机 性价比高的车排行榜 那款笔记本性价比高 性价比超高的笔记本 哪种护肤品性价比高 性价比高的手机有哪些 有哪些性价比高的手机 笔记本那款性价比高 哪种纸尿裤性价比高 标致哪款车性价比高 1000性价比高的手机 行车记录仪性价比高的品牌 现在性价比比较高的手机 性价比高的紧凑型suv排行榜 性价比高的平板推荐 性比价是什么意思 性价 哪个牌子的表性价比高 什么马桶好用性价比高 电脑哪个牌子性价比高 婴儿推车哪个性价比高 哪个牌子电脑性价比高 三星哪款手机性价比高 现在那些手机性价比高 哪个品牌空调性价比高 哪个牌子的拉杆箱性价比高 瓷砖哪个牌子的性价比比较好 什么牌子的羽毛球拍性价比高 什么牌子的蓝牙耳机性价比高 男士钱包什么牌子性价比高 抽油烟机哪个牌子性价比高 液晶电视什么牌子性价比高 哪个牌子的油烟机性价比高 森海塞尔哪款耳机性价比高 哪个牌子的平板性价比高 蓝牙耳机什么牌子性价比高 什么牌子的充电宝性价比高 哪个牌子的按摩椅性价比高 机械键盘什么牌子性价比高