C语言的常用类型转换函数(atoi,atol,strtod,strtol,strtoul)
上一篇 / 下一篇 2009-09-03 15:28:00 / 个人分类:C语言
{ Y'C4b4`7hM7C0atof(将字符串转换成浮点型数)51Testing软件测试网mR2[oa-e
相关函数51Testing软件测试网T9F? p:l&^5d
atoi,atol,strtod,strtol,strtoul51Testing软件测试网a?$| r8i3f2_#z
表头文件
YjoX4t"\:Q0 #include <stdlib.h>
.ef
V.MOlkA6u4f0定义函数51Testing软件测试网;nAs}&C(?
double atof(const char *nptr);
g%eu,X*j
L&v0函数说明
0ATG(e}0 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
KFqEk;Bt0返回值51Testing软件测试网9ubX0z%`1[(e
hG`
返回转换后的浮点型数。51Testing软件测试网Bz#dUY
附加说明51Testing软件测试网M{7y${lF
atof()与使用strtod(nptr,(char**)NULL)结果相同。
!V]y)qr&m_7M)n0范例51Testing软件测试网-Xiz%AIcZb,t7J
/* 将字符串a 与字符串b转换成数字后相加*/51Testing软件测试网x`H'LPI(qB
#include<stdlib.h>51Testing软件测试网
u
c;^$L,y{%sq*tY
main()51Testing软件测试网L k@-l(~:m+vm2z
{
f ^3UXB,R2W
a'|%{0char *a=”-100.23”;
'i5r.C-sXJa%r;p0char *b=”200e-2”;51Testing软件测试网)h ] ^zO3ir,C
float c;
)[7xn4Q$\`j+y0lv0c=atof(a)+atof(b);51Testing软件测试网2im!S+L8uR.B.@3F
printf(“c=%.2f ”,c);51Testing软件测试网?XzI/z S:p4U5p
~
n{
}51Testing软件测试网4W*uv4[1Q0~M7Uyx3W4K
执行51Testing软件测试网,vI^]7ox
c=-98.23
!A#Mw/SsC-z051Testing软件测试网0_ Ou,jQx
51Testing软件测试网V+n"D||*mh
51Testing软件测试网N UD%sR-z:`B
atoi(将字符串转换成整型数)51Testing软件测试网`7VYtMjj
相关函数
(x5hY(}t\ig0 atof,atol,atrtod,strtol,strtoul
7j}%Jj7CI"[b0表头文件51Testing软件测试网 js
b!a,C$b+eztq
#include<stdlib.h>51Testing软件测试网J0?
M7u,s.F
定义函数
vVs
gQ0 int atoi(const char *nptr);51Testing软件测试网 ]WB0n!}{`
函数说明51Testing软件测试网;UYF6IYfy"p
atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。
*u+?*]ia _I\O0返回值51Testing软件测试网T`:hpB)\R
H%I
返回转换后的整型数。51Testing软件测试网#b ^2F)V~hG4\I
附加说明
x'v&O!C`:w0 atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。
'}6}"x$E
CBi0范例
;`t)dMPjX(E0 /* 将字符串a 与字符串b转换成数字后相加*/51Testing软件测试网:~-V1B P D'l)R
#include<stdlib.h>51Testing软件测试网m,f7fh5qV7A
mian()51Testing软件测试网Vdpk j}
{51Testing软件测试网S4LgAF0r/q
char a[]=”-100”;51Testing软件测试网\ Xm
NI2@"gUf
char b[]=”456”;
3F
f.I1v`_4iU0int c;51Testing软件测试网-?#_:Yq\8G{!s
c=atoi(a)+atoi(b);
[#X ]+cn5|zMi[0printf(c=%d ”,c);51Testing软件测试网h;{
at H$cbT
}51Testing软件测试网j:\3^Rh y
执行
+~:l!T9b
m xfC+Z_0 c=35651Testing软件测试网?+P;g}A*[
?EV_X051Testing软件测试网7z,^NQ+e+F4^Id~]
51Testing软件测试网!Q']4_
j#t}
atol(将字符串转换成长整型数)
9`*N0yHu#\5Y0相关函数51Testing软件测试网%[]Q T"Rw
atof,atoi,strtod,strtol,strtoul51Testing软件测试网}A"w"Ttr
表头文件
M%p*lSSP h
Y0 #include<stdlib.h>51Testing软件测试网 g:L![%|KK
定义函数
%{[z)m%G0 long atol(const char *nptr);
N!x%nA@8vv0函数说明
2_'P@)?l0 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。51Testing软件测试网5Q"c&oT|
返回值51Testing软件测试网z/KY/FAtX
返回转换后的长整型数。
o%@"^.Yd0附加说明51Testing软件测试网V df P`^CKX
atol()与使用strtol(nptr,(char**)NULL,10);结果相同。51Testing软件测试网%ONG*?!Mu4k2qV
范例
'S*q6XS@5gE&{p0 /*将字符串a与字符串b转换成数字后相加*/
b:sS!E+o#xoeO&{7y0#include<stdlib.h>
7x.Q*^,u'MgF8F+Y} u0main()
q O(G6~BS L#l0{
F yvAS0NI0char a[]=”1000000000”;51Testing软件测试网"mpVZ_RX
char b[]=” 234567890”;51Testing软件测试网(X9ty8~m.l:m0p)m}[
long c;51Testing软件测试网5sB^}&F'W$J W
c=atol(a)+atol(b);51Testing软件测试网aPX{r'CswMd
printf(“c=%d ”,c);51Testing软件测试网iK1JX3{
}
!H-Xf!piGg0E,J0执行
,Xe5Vm{ai!W&o E0 c=123456789051Testing软件测试网,SIG~j,^d*QG
51Testing软件测试网Ga#n rm[i*C*B
51Testing软件测试网u6VX7q:_1Ye
6rsw
X%AV"L b0gcvt(将浮点型数转换为字符串,取四舍五入)
!lJ,V }iy X+IW0相关函数51Testing软件测试网$VG/JGv oB
ecvt,fcvt,sprintf
4B:Lt JY0表头文件51Testing软件测试网 Zo-y\7YM;xw*C
#include<stdlib.h>
M,Y&I5_ a9V{CD3X0定义函数51Testing软件测试网1Dr#_N.c]
s rBg
char *gcvt(double number,size_t ndigits,char *buf);51Testing软件测试网gr7R$Zw&h
函数说明51Testing软件测试网;pl{Z N$QF
gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。
2Z0\:OB*Nw5Ls0返回值
;y
xVZ y!G-\J0 返回一字符串指针,此地址即为buf指针。51Testing软件测试网R m#biX*j)]
附加说明
D6|:KD)P4W @*F.P0 51Testing软件测试网4A3f K
H9_k
范例51Testing软件测试网.C%S)QK(K&B}biB
#include<stdlib.h>51Testing软件测试网0YJ@U"MQN-J
n.@
main()
$UmtD+W&G(e.Wt0{
t-Og'U(?Q0double a=123.45;51Testing软件测试网3jS\ P5L_9Q'Y3F
double b=-1234.56;51Testing软件测试网[*CZ&@J/I/~\1s
char *ptr;
?u/s4C,H.Jc.f0int decpt,sign;
x#d&]t3f!Q0gcvt(a,5,ptr);
Y.Y
f#M$@c0x7b0printf(“a value=%s ”,ptr);51Testing软件测试网3j$?o[ \2i
ptr=gcvt(b,6,ptr);51Testing软件测试网*xsy7C.e+O0_4H;`
printf(“b value=%s ”,ptr);51Testing软件测试网$U4eqSA~fKY3j
}
1|Y#s+B:iQev
o1~L6Q0执行51Testing软件测试网&QG`6I)L8Df^
a value=123.45
'Bi!U3v$n Ha0b value=-1234.5651Testing软件测试网wDfx:gI`
,P:^)F#n6bI.g0 51Testing软件测试网 K5U*` h'cM
strtod(将字符串转换成浮点数)
'^-j LxBG0相关函数51Testing软件测试网x9x0{-_`
atoi,atol,strtod,strtol,strtoul51Testing软件测试网xLPsq}d+`
表头文件
O&c$diGC_R0 #include<stdlib.h>51Testing软件测试网0b|Z{g$rE
定义函数51Testing软件测试网q9] }[-CQcbVG,z
double strtod(const char *nptr,char **endptr);51Testing软件测试网#_.Fi:cYjEe
函数说明51Testing软件测试网sh W$f,}
strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。
GM3VGiAS0返回值51Testing软件测试网c xk{^(ju
返回转换后的浮点型数。
?I)tm#O;T0附加说明51Testing软件测试网+DkjH0Exl'f"NVf
参考atof()。51Testing软件测试网"mj,J:{7x
范例
}1Mj:_e%s0 /*将字符串a,b,c 分别采用10,2,16 进制转换成数字*/51Testing软件测试网?9T$JzkB/t
#include<stdlib.h>
2C5K6\ }SC!n;S0mian()51Testing软件测试网#c4\*Q1t*}I
{
4rr{R1|g:y+u%Y0char a[]=”1000000000”;
1Y9@M9q/c*g4_
Y0char b[]=”1000000000”;51Testing软件测试网Z
O!a)cPv
char c[]=”ffff”;51Testing软件测试网bJI%E}[2t
printf(“a=%d ”,strtod(a,NULL,10));
Y fW}t[,l4? n1X0printf(“b=%d ”,strtod(b,NULL,2));51Testing软件测试网NH"c([?zu.u)Yy
printf(“c=%d ”,strtod(c,NULL,16));
9X~~(s6z|S0}51Testing软件测试网7Gan!oEw5?
执行
i)B G%M{@0 a=100000000051Testing软件测试网"Hh(K Z#T
b=512
1x1zF"P'^X0c=6553551Testing软件测试网s b,Sw CS
n.Rx2NalHN]0
n-B9r
F d0 51Testing软件测试网'`a1S3z3H8~
strtol(将字符串转换成长整型数)51Testing软件测试网5K8M/r5G4kS6eG
U
相关函数
1X M.X1c8N9Bc
N7}9^\)m0 atof,atoi,atol,strtod,strtoul51Testing软件测试网#mg&\7r"w7_S*Ml
表头文件
G$} M Z G0 #include<stdlib.h>
j0Ww&@3Q,m/Rpy0定义函数
!mF:J~z T*?$cp0 long int strtol(const char *nptr,char **endptr,int base);51Testing软件测试网R+N-@"aBEC qi7w
函数说明
0bo:CJ?,p0 strtol()会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如 base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符则会使用 16进制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
{&Avh(^0返回值51Testing软件测试网^ZJd3Lo_K
返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。51Testing软件测试网f$lg3|'c|0q
附加说明
0j YN(_?0 ERANGE指定的转换字符串超出合法范围。
$R#X)sN0oNK0范例51Testing软件测试网)Op o5r*N8Cs
/* 将字符串a,b,c 分别采用10,2,16进制转换成数字*/
JLHY3Y"o\zw0#include<stdlib.h>51Testing软件测试网N5j*r
h9Izuz1K ]
main()
e S/OH'z]0{
f|"|U0{gtH0char a[]=”1000000000”;51Testing软件测试网V;| P4O$T??w E,|w&d
char b[]=”1000000000”;51Testing软件测试网$VXwm
y.lo
char c[]=”ffff”;51Testing软件测试网v7u/d$X5DL
printf(“a=%d ”,strtol(a,NULL,10));51Testing软件测试网W-W2ZEKU
printf(“b=%d ”,strtol(b,NULL,2));
yRui5`1k0printf(“c=%d ”,strtol(c,NULL,16));51Testing软件测试网/g|I4aC
}
6^&J"\"~LE3a-i0执行
j!B&S