C语言的常用类型转换函数(atoi,atol,strtod,strtol,strtoul)

上一篇 / 下一篇  2009-09-03 15:28:00 / 个人分类:C语言

!N|1v1b T e ?c_'e0atof(将字符串转换成浮点型数)51Testing软件测试网0q usWv0Q2b?
相关函数
{h B!w5I0X0     atoi,atol,strtod,strtol,strtoul
ze)i0S U3e0表头文件51Testing软件测试网/f@6|Hq^0V
     #include <stdlib.h>
j)O~Z9?y0定义函数
-T2C9n0? \}.uT0     double atof(const char *nptr);
@5W]9Z5Y8b%a%z:hq0函数说明51Testing软件测试网Q5~!fx I Ad k-Qx
     atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。51Testing软件测试网Ln]*heBJ
返回值51Testing软件测试网m[)K+TG(K}
     返回转换后的浮点型数。51Testing软件测试网6kwm#rdm%C7b;T
附加说明51Testing软件测试网n_+D9`#kC8I
     atof()与使用strtod(nptr,(char**)NULL)结果相同。
{ OzCk.abD(_0范例
]0TOjGX:N0     /* 将字符串a 与字符串b转换成数字后相加*/
,J9G9W#_]0#include<stdlib.h>
b5f*\v8z Ql0main()51Testing软件测试网!r]WD{
{51Testing软件测试网&cj}%Co!e$yVy
char *a=”-100.23”;
#n-N:}wv:^/Z0char *b=”200e-2”;51Testing软件测试网V$hun(D U#]
float c;51Testing软件测试网W8efhR
c=atof(a)+atof(b);51Testing软件测试网E${M Zqk4Ta)l&i,v
printf(“c=%.2f ”,c);51Testing软件测试网 T4R}#Ru/?W
}
MR4{:Pz-u0执行
ky Cb)xgHV0     c=-98.23
"_v}|"KZ/@mj?tPd051Testing软件测试网q-r7ae7p

51Testing软件测试网}_|-v3s8L*q)e

51Testing软件测试网:yyc[/L,}i#N0H!V
     51Testing软件测试网&P|:ij7q)Z/O4F#Jt
atoi(将字符串转换成整型数)
*W`'H7Q o2Q'h0相关函数51Testing软件测试网{3sS(z}
     atof,atol,atrtod,strtol,strtoul
#V3@)g+c$H1X0表头文件
5`V+c c%P0     #include<stdlib.h>
/Y fg$Y&I}+oJ0定义函数51Testing软件测试网fsgM9N+fzSR
     int atoi(const char *nptr);
-P5v%| B(Go0函数说明
K?,b+T9c_ m z.G0     atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。51Testing软件测试网}/r6V UE`(|h
返回值
AhBG-CS\w j0     返回转换后的整型数。
J c+C'^9]8k0附加说明51Testing软件测试网TQ!lD`R SK Mb
     atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。
j4k0oK9eL0范例
g-M`P3{ n]Ly;b0     /* 将字符串a 与字符串b转换成数字后相加*/
{m%o-sX&J0#include<stdlib.h>51Testing软件测试网/C2hrsV
mian()
zv Z6Q$P,F0{
4u:w)UI|:bL+?0char a[]=”-100”;51Testing软件测试网y#F:X8`0B7LR%t A5H
char b[]=”456”;51Testing软件测试网C)Qb&i_rSW-a
int c;51Testing软件测试网8AzR S5L6AS
c=atoi(a)+atoi(b);
j8X7NtB)]8W&rw0printf(c=%d ”,c);
7wM,E+~!}n(pQ,X0}51Testing软件测试网@ uR jeN&g
执行51Testing软件测试网XQ$M8NS V
     c=356
+Q)OJ D^^M051Testing软件测试网,u7JBb^lC+fK

51Testing软件测试网^~(yMvWtFb*k

51Testing软件测试网 }2P2W7TH_"o
    
*lj| N,Q9sG [@0atol(将字符串转换成长整型数)
I},`n0_a o0相关函数
v9J1r8Y h"l2O dP8G0jc0     atof,atoi,strtod,strtol,strtoul
7UJ#g'T.}A0表头文件
yA:u6W'F0     #include<stdlib.h>51Testing软件测试网?5`9pHbuz5a
定义函数
6N3F\KTP0     long atol(const char *nptr);51Testing软件测试网%n5i gK7U?.V
函数说明51Testing软件测试网;yf-vx Y&KI@)Ka9z
     atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。
}vcL yj0返回值
\ NvU2^#tt7z9gG0     返回转换后的长整型数。51Testing软件测试网UwM'a_g
附加说明
2uOtS)U(e1A0     atol()与使用strtol(nptr,(char**)NULL,10);结果相同。
Co Bf*nvma0范例51Testing软件测试网I P?)ZxU]i
     /*将字符串a与字符串b转换成数字后相加*/51Testing软件测试网h!bGI T$U|
#include<stdlib.h>
iG*s5z(pH?Fv7h}0main()
k1G pY;_O0{51Testing软件测试网8u#L#f-B ll7Vj(s
char a[]=”1000000000”;
PI'I?"b]:f0char b[]=” 234567890”;51Testing软件测试网V_;i8a2o*IqHD
long c;
Zg m7p blL&`;S0c=atol(a)+atol(b);
|2b.pl_:u(v:{S:Ja0printf(“c=%d ”,c);51Testing软件测试网 l#t6j g e
}
9cKfJ o2A5xp0执行
#|AD!^$|5u*h p5L0     c=1234567890
d |UH\c:kt-c051Testing软件测试网o_-Ns-Ls n5o@7eg

o hM9K:p` q4Rt^`yp6Z051Testing软件测试网o UXQ |9TKl Cb
     51Testing软件测试网R:~tW7b+?F5lf`n
gcvt(将浮点型数转换为字符串,取四舍五入)
.k Btr[)@)X0相关函数
C1F [%ktHY)Y2e0     ecvt,fcvt,sprintf51Testing软件测试网R,@#@2c6\6cHd
表头文件
9V q9Ycj+h0Ln0     #include<stdlib.h>51Testing软件测试网"[dLfHP"|%spr
定义函数51Testing软件测试网r[(De[(|
     char *gcvt(double number,size_t ndigits,char *buf);51Testing软件测试网gQ]|IO E X2hV lt2@
函数说明
U VkMsc(U0     gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。51Testing软件测试网8V.`Om2Ip!m~4G @#F
返回值
"|)\ P2^@ e:X0     返回一字符串指针,此地址即为buf指针。51Testing软件测试网X4j(`5X2x/|
附加说明
(r4[XMO.Hj0    
;Ic.i fF/Z0范例51Testing软件测试网;mnD"R(gw[
     #include<stdlib.h>
%q+_6q6x0pA0[wV7g|0main()51Testing软件测试网+|:xM|x6tvO$Ic
{51Testing软件测试网D3GO,[am
double a=123.45;
.xE5vSX'kH0double b=-1234.56;
+JZ:W$A1WEg0char *ptr;51Testing软件测试网V5^O/C\x V
int decpt,sign;51Testing软件测试网1o t}@Ty&Z+G
gcvt(a,5,ptr);
^P,{ G5yl fk;Gq0printf(“a value=%s ”,ptr);51Testing软件测试网 A jKcN)tBh
ptr=gcvt(b,6,ptr);
pG,s/y |kZ0printf(“b value=%s ”,ptr);51Testing软件测试网:V6P6}vN&_j.V
}51Testing软件测试网i^ Jh+D D
执行
,P(?%Y2` S zJ0     a value=123.45
mlf`bk:F0b value=-1234.56
V#O,U_4No(z1FN0

4J [ PE3u+K0

U.W)G?0[ F P0
8qS;F [Ju i0    
#um~)P q{4x+DA0strtod(将字符串转换成浮点数)51Testing软件测试网+z(Fi;A@e2]%m;w
相关函数51Testing软件测试网P;}(EW-J8BpG6k
     atoi,atol,strtod,strtol,strtoul51Testing软件测试网sSb5m\
表头文件51Testing软件测试网1R"bYi-N*m`
     #include<stdlib.h>51Testing软件测试网9@oz&Jfx&K1r A
定义函数
v$[&x!S:MK R0     double strtod(const char *nptr,char **endptr);51Testing软件测试网ps9S5oa]sx
函数说明
U;DZ\c Q*j0     strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。51Testing软件测试网6IKW-j,k!X
返回值51Testing软件测试网$hJW0c8sq
     返回转换后的浮点型数。51Testing软件测试网d;J k5cH%I7s
附加说明
.d*e b1\7w#Q0     参考atof()。
%ID Z(m1lSB;N }0范例
qOxMm0     /*将字符串a,b,c 分别采用10,2,16 进制转换成数字*/
F:MDp,{Iu oru_x8y0#include<stdlib.h>51Testing软件测试网g [J]2X
mian()
ZhJ~$]F0{51Testing软件测试网!TMN\7r/a4W
char a[]=”1000000000”;51Testing软件测试网;n^(RZ6j _ J
char b[]=”1000000000”;
o;eb[4aoJ&e#l0char c[]=”ffff”;51Testing软件测试网2?0U"Be(Z*i
printf(“a=%d ”,strtod(a,NULL,10));51Testing软件测试网-B%r3t ]$a@1|}5h j
printf(“b=%d ”,strtod(b,NULL,2));
&T~Mw1iZ0printf(“c=%d ”,strtod(c,NULL,16));
_W#I,xaT0}
m#qEDveZ`!t2j0执行51Testing软件测试网Y8K/f|u DdC O9@R
     a=100000000051Testing软件测试网])G-s;s qc
b=51251Testing软件测试网y#y(i8_6]{hM
c=6553551Testing软件测试网oI:T3kp'E`W
51Testing软件测试网W%X/@|*oj ZYC)p(d

A:EAMI3NE!o:D ?0
^M6x#h|,ED0     51Testing软件测试网Kp)]?,A#S
strtol(将字符串转换成长整型数)51Testing软件测试网~(Idt3oR_ S
相关函数
Qj0X4qF Kp;s Da0     atof,atoi,atol,strtod,strtoul51Testing软件测试网m2lWR&X4w@1s,a
表头文件
N'gG-p*yjw0     #include<stdlib.h>51Testing软件测试网(A;NT;U9D$G8`
定义函数51Testing软件测试网/N ~.Wg&p&v e:}
     long int strtol(const char *nptr,char **endptr,int base);51Testing软件测试网EUC5]j2Nz4`
函数说明
;rNG+i$u!C r0     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返回。
"KS7VH:X8?0返回值
WY)l+S5y'o0     返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。
.aw`3\ i4FU0附加说明51Testing软件测试网T-Y(A+j _
     ERANGE指定的转换字符串超出合法范围。
1wp-wiqL9l0范例51Testing软件测试网8I$X"d5]8RTu
     /* 将字符串a,b,c 分别采用10,2,16进制转换成数字*/
}|["K8x0n.?0#include<stdlib.h>51Testing软件测试网T/LUJ I5d:@
main()51Testing软件测试网#hgk!K~;D(Q}
{
B5? rz:CKWm9\v0char a[]=”1000000000”;
cnT`2`@b(n7U-wzn0char b[]=”1000000000”;
2H3z:TPTS0char c[]=”ffff”;51Testing软件测试网/]+U5C;p a@:Z)x
printf(“a=%d ”,strtol(a,NULL,10));51Testing软件测试网Z ltNWh k
printf(“b=%d ”,strtol(b,NULL,2));
z4s`0J#NG0printf(“c=%d ”,strtol(c,NULL,16));
v#EV$y L0}51Testing软件测试网wlU*z${ ?w)KC
执行
Km aE,vg;?|2B0     a=100000000051Testing软件测试网1iIytqi#b,`]
b=512
7l]i o(|0c=65535
q&Xbe9RXu/z s051Testing软件测试网U\zF ^6D4Z'PUB

51Testing软件测试网^6m4j2{6L"m U


NN6B-P^#}#D Z [0     51Testing软件测试网&U$i ?FkS5dp
strtoul(将字符串转换成无符号长整型数)
X)L-Yf~0相关函数
!Os&}k*lW;B W-]J0     atof,atoi,atol,strtod,strtol
$y.EZ Uh0表头文件51Testing软件测试网7^Q0\4v8g7ys4|
     #include<stdlib.h>51Testing软件测试网"J5@,n7{U-UCoF
定义函数51Testing软件测试网+zZ Cr@,e
     unsigned long int strtoul(const char *nptr,char **endptr,int base);51Testing软件测试网_Z&e @FdK
函数说明
1R0r rVc'Ky%r}u0     strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符则会使用16进制做转换。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。51Testing软件测试网So CVz E'M
返回值51Testing软件测试网+b0o,f W{3sZ$h,N2NM%v
     返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。
.q/[:Q$X&a2e0附加说明51Testing软件测试网+v5D:XP@mL|X
     ERANGE指定的转换字符串超出合法范围。51Testing软件测试网,^S N(XsO4? u
范例
;e$D Px8Nj l0     参考strtol()51Testing软件测试网Xr(Izb2tlo^
51Testing软件测试网4jAn k?`H2Q

*{S!M$F:ilt R)hF~0
3RgIPD0    
2]N.f9Hq _*E0toascii(将整型数转换成合法的ASCII 码字符)51Testing软件测试网'Cc AC#B
相关函数51Testing软件测试网`:T]m`Y3?!`f*u
     isascii,toupper,tolower51Testing软件测试网U$jG*R5Sciz9S \y
表头文件
%}eb nccz,Z)m y0     #include<ctype.h>51Testing软件测试网6Q!^|7d q-C/~+@
定义函数51Testing软件测试网bX$V.\jU ] R!n
     int toascii(int c)51Testing软件测试网use Q+z)}3[
函数说明51Testing软件测试网9Rq|0s]:n
     toascii()会将参数c转换成7位的unsigned char值,第八位则会被清除,此字符即会被转成ASCII码字符。51Testing软件测试网~4M ~5QQLC
返回值51Testing软件测试网"Ia4H4?r"E)q
     将转换成功的ASCII码字符值返回。51Testing软件测试网*z#|-_fKd]/U"~*g T0O
范例
:nJ5{K1uC0     #include<stdlib.h>
l#W$yhJ~.Tq0main()51Testing软件测试网Vm6u` ^kGr'K`(o
{51Testing软件测试网W(q0SHM5_
int a=217;
r;s xdw]{i2e0char b;51Testing软件测试网?E b,_4y ho
printf(“before toascii () : a value =%d(%c) ”,a,a);51Testing软件测试网6d6cqn9iyD`
b=toascii(a);
To[ c9n`"As |0printf(“after toascii() : a value =%d(%c) ”,b,b);51Testing软件测试网1DWUiy(z6Q
}
,M im+`iHs"\0执行51Testing软件测试网5W;U4FeD)S's
     before toascii() : a value =217()51Testing软件测试网 b7J1r)Zr"U)c
after toascii() : a value =89(Y)
AG.ph6`s9v051Testing软件测试网nxn"`h"`'U

TN} \uE4y0
8dn p'Tu)c0     51Testing软件测试网1F3Cx EyIzQ"q
tolower(将大写字母转换成小写字母)51Testing软件测试网]kcr3~;F
相关函数51Testing软件测试网k4R0mL)YI6F"I1x |
     isalpha,toupper51Testing软件测试网'N0e4g0dV2QlV
表头文件
$Q2P"P ky0]WK0     #include<stdlib.h>
(A@:@h#L ]$vH7`0定义函数51Testing软件测试网9~vW9`5x |t
     int tolower(int c);
*v7Kw0lVr0函数说明
I&g q1s(h b M Kw0     若参数c为大写字母则将该对应的小写字母返回。
#[ m*uWY7I0返回值
m$H{#x/oU4K3o7z0     返回转换后的小写字母,若不须转换则将参数c值返回。
4lS3Mp'tG7P7e+s0附加说明
k:H%WM0q^S0    
fu7I%h9Bx0范例51Testing软件测试网W(d,E.w)}tLZc
     /* 将s字符串内的大写字母转换成小写字母*/
L7{B}Y'oXVx9Co0#include<ctype.h>51Testing软件测试网-is"C]4iGWu6t
main()
({hN'id+r~a8U0{51Testing软件测试网e%t5|P^*c i
char s[]=”aBcDeFgH12345;!#$”;51Testing软件测试网b@,} NLT
int i;
.{o i?w;SuG/y'R W'Y0printf(“before tolower() : %s ”,s);
;e f!K)AG4g#k U E'a(c0for(i=0;I<sizeof(s);i++)
vr1s4|;F*F[8MT8H {0s=tolower(s);
Cuka z~2Evuu0printf(“after tolower() : %s ”,s);51Testing软件测试网 {d'b5A+` |
}51Testing软件测试网5Q5B7?1Z'u4R
执行
U"eIS@!AQ*DMY0     before tolower() : aBcDeFgH12345;!#$51Testing软件测试网\e{7?R-z O`bPp
after tolower() : abcdefgh12345;!#$51Testing软件测试网 n!mq4u:^3Y a
51Testing软件测试网 gNM ?Wy,`

51Testing软件测试网0hhf-_["x FE+dj

51Testing软件测试网3Y2AN'?I+_U
    
&PN7_\!q A#v"a4W0toupper(将小写字母转换成大写字母)51Testing软件测试网m p'v-^1h
相关函数
5M%LWx}0     isalpha,tolower
H/r9G(a vN(p1g2M3]0表头文件51Testing软件测试网a d7gH4n]5ej
     #include<ctype.h>
DhV LLZ O0定义函数
|!OE+^I%~7_K0     int toupper(int c);51Testing软件测试网Ch z*e"i&C`T6x s2F
函数说明51Testing软件测试网;@!Wk0n(A,^|^lG9@
     若参数c为小写字母则将该对映的大写字母返回。
@5lIlh)Z4H0返回值51Testing软件测试网^5g:J%f0e/x
     返回转换后的大写字母,若不须转换则将参数c值返回。51Testing软件测试网@3zlf(T_ o#o
附加说明51Testing软件测试网L qQ3XC0H
     51Testing软件测试网 r#~2|+F-^8f ~0i#|6E
范例
(EMU@o%p\%\0     /* 将s字符串内的小写字母转换成大写字母*/51Testing软件测试网sfo{#f
#include<ctype.h>51Testing软件测试网(tIUhz
main()
H-{)Y~Z:} J/Z0{
$m E(xV]8s4w6}0char s[]=”aBcDeFgH12345;!#$”;
AZrj+K\a-i#f}0int i;
| v9H'^#s0R c-Z8F0printf(“before toupper() : %s ”,s);
i5C`)I3P*f4X0for(i=0;I<sizeof(s);i++)
t(T_+`h7^b{,u0s=toupper(s);
b~kz$fR Z0printf(“after toupper() : %s ”,s);51Testing软件测试网d3w&FH~R
}51Testing软件测试网2P P ha"LI4\)E'D
执行
;U2k ^D k9t!v0     before toupper() : aBcDeFgH12345;!#$51Testing软件测试网0w#h x+j&nA`-J
after toupper() : ABCDEFGH12345;!#$

+V.`Jc;t0

TAG: 类型转换 C语言

 

评分:0

我来说两句

Open Toolbar