本文中调用的四个函数如下:
atoi函数:将字符串转化为int类型变量
atol函数:将字符串转化为long类型变量
atoll函数:将字符串转化为long long类型变量
atof函数:将字符串转化为double类型变量
这些函数的转化过程,都是将一个字符串的可读部分取到变量中
遇到不可读的部分,则直接终止读取。
调用示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#include
#include
#define Seperate(); printf("\n=============\n\n");
int
main()
{
Seperate();
//atoi
printf
(
"atoi: string to integer\n"
);
const
char
* s00 =
"1234567890"
;
printf
(
"%s -> %d\n"
, s00,
atoi
(&s00[0]));
const
char
* s01 =
"123.4"
;
printf
(
"%s -> %d\n"
, s01,
atoi
(&s01[0]));
const
char
* s02 =
"xyz"
;
printf
(
"%s -> %d\n"
, s02,
atoi
(&s02[0]));
const
char
* s03 =
"1234xyz"
;
printf
(
"%s -> %d\n"
, s03,
atoi
(&s03[0]));
Seperate();
//atol
printf
(
"atol: string to long\n"
);
const
char
* s10 =
"1234567890123"
;
printf
(
"%s -> %ld\n"
, s10,
atol
(&s10[0]));
const
char
* s11 =
"123.4"
;
printf
(
"%s -> %ld\n"
, s11,
atol
(&s11[0]));
const
char
* s12 =
"xyz"
;
printf
(
"%s -> %ld\n"
, s12,
atol
(&s12[0]));
const
char
* s13 =
"1234xyz"
;
printf
(
"%s -> %ld\n"
, s13,
atol
(&s13[0]));
Seperate();
//atoll
printf
(
"atoll: string to long long\n"
);
const
char
* s20 =
"1234567890123"
;
printf
(
"%s -> %lld\n"
, s20, atoll(&s20[0]));
const
char
* s21 =
"123.4"
;
printf
(
"%s -> %lld\n"
, s21, atoll(&s21[0]));
const
char
* s22 =
"xyz"
;
printf
(
"%s -> %lld\n"
, s22, atoll(&s22[0]));
const
char
* s23 =
"1234xyz"
;
printf
(
"%s -> %lld\n"
, s23, atoll(&s23[0]));
Seperate();
//atof
printf
(
"atof: string to double\n"
);
const
char
* s30 =
"1234567890"
;
printf
(
"%s -> %lf\n"
, s30,
atof
(&s30[0]));
const
char
* s31 =
"123.4"
;
printf
(
"%s -> %lf\n"
, s31,
atof
(&s31[0]));
const
char
* s32 =
"xyz"
;
printf
(
"%s -> %lf\n"
, s32,
atof
(&s32[0]));
const
char
* s33 =
"1234xyz"
;
printf
(
"%s -> %lf\n"
, s33,
atof
(&s33[0]));
Seperate();
return
0;
}
|
运行效果:
END
----------------------------------------------------------------------------------------
另:
strtod:将字符串转换成浮点数
double
strtod
(
const
char
*nptr,
char
**endptr);
|
strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。
strtol:根据参数base来转换成长整型数
long int strtol(const char *nptr,char **endptr,int base);
参数1:字符串起始地址
参数2:返回字符串有效数字的结束地址,这也是为什么要用二级指针的原因。
参数3:转换基数。当base=0,自动判断字符串的类型,并按10进制输出,例如"0xa",就会把字符串当做16进制处理,输出的为10
strtoul:将字符串转换成无符号长整型数
unsigned long strtoul(const char *nptr,char **endptr,int base);
参数1:字符串起始地址
参数2:返回字符串有效数字的结束地址,这也是为什么要用二级指针的原因。
参数3:转换基数。当base=0,自动判断字符串的类型,并按10进制输出,例如"0xa",就会把字符串当做16进制处理,输出的为10
----------------------------------------------------------------------------------------
double
strtod
(
const
char
*nptr,
char
**endptr);
|