atof和atoi

atof:将字串转换成浮点型数

表头文件 #include <stdlib.h>

函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
返回值 返回转换后的浮点型数。
附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。
范例 /* 将字符串a 与字符串b转换成数字后相加*/
 
 1 #include<stdlib.h>
 2 int main()
 3 {
 4 char*a="-100.23";
 5 char*b="200e-2";
 6 doublec;
 7 c=atof(a)+atof(b);
 8 printf(“c=%.2lf\n”,c);
 9 return 0;
10 }
 
执行 c=-98.23
 
 
 
atoi:atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数
 
头文件 #include <stdlib.h>
 
atoi( ) 函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0
 
 1 //vs2013里调用printf函数请使用预处理命令#define _CRT_SECURE_NO_WARNINGS
 2 #include <stdlib.h>
 3 #include <stdio.h>
 4  
 5 int main(void)
 6 {
 7     int n;
 8     char *str = "12345.67";
 9     n = atoi(str);
10     printf("n=%d\n",n);
11     return 0;
12 }
输出:
n = 12345
 
 
 
与此相关的还有:
 
atol:把字符串转换成长整型数
 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 int main(void)
 4 {
 5     long l;
 6     char *str = "98765432";
 7     l = atol(str); /* 原来为l = atol(str); */
 8     printf("string = %s integer = %ld\n", str, l);
 9     return(0);
10 }

执行 string=98765432 integer=98765432

 

 

strtoul:将字符串转换成无符号长整型数

 

strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时会根据情况选择用哪种进制:如果第一个字符是'0',就判断第二字符如果是‘x’则用16进制,否则用8进制;第一个字符不是‘0’,则用10进制。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。

 

例子:将十六进制 0xFF,转换成 10进制,得到 255

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int main()
 4 {
 5     int a;
 6     char pNum[]="0xFF";
 7     a=strtoul(pNum,0,0);//最后的0,表示自动识别pNum是几进制
 8     printf("%ul\n",a);
 9     return 0;
10 }

输出:255

 

strtol:将参数nptr字符串根据参数base来转换成长整型数。

strtod:将字符串转换成浮点数。

 
posted @ 2017-02-22 19:57  Kiven#5197  阅读(1397)  评论(0编辑  收藏  举报