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

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

Dc1\(dA;j5g*L"p6Xb0atof(将字符串转换成浮点型数)51Testing软件测试网J5`C|9Y0vP
相关函数
&Z"Q&JAv3C\m(K1}4A0     atoi,atol,strtod,strtol,strtoul51Testing软件测试网:ZQ6FUP
表头文件
C/}k)}Gz\CLWB _!x0     #include <stdlib.h>
f.K j,X0x]Y6?6S0定义函数
|R}\3F*n&C9H0     double atof(const char *nptr);51Testing软件测试网0B1v3@V|
函数说明
m#yZ!dLg$r&F0     atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。51Testing软件测试网.B0Z!P,FO1t*n
返回值51Testing软件测试网K M}L1|*c)\ x
     返回转换后的浮点型数。51Testing软件测试网,w!Q#v2LCn;_;hPY
附加说明
/m6ne4Eq*O*ODn\0     atof()与使用strtod(nptr,(char**)NULL)结果相同。
\3K/oQ;}C0范例51Testing软件测试网|6~T;X:_(eY@%Y
     /* 将字符串a 与字符串b转换成数字后相加*/
:xCpaf Eo0#include<stdlib.h>
`lX QU`;z6U K'?0main()51Testing软件测试网0T{q;~s4djc
{
0[ X O GN2F*C0char *a=”-100.23”;
5Hm%m]L;X7u#i%Y0char *b=”200e-2”;
1J~UGE L4g0float c;
D,QW!\fnA8Vc0c=atof(a)+atof(b);
c1n-B*e MC0printf(“c=%.2f ”,c);51Testing软件测试网8r.qT^JE!} F
}51Testing软件测试网%[/i9l A Jkr
执行
8Ji|.^$_5DCy!R0     c=-98.2351Testing软件测试网 t+S/^X1w.EM c"yK

~/z'qPh7vp/t0BYb,D0

"j0u6O7Ufjl~.}0
@4TH,W:XS:U0     51Testing软件测试网K3fU5nu k7o\"k~
atoi(将字符串转换成整型数)
sn8K8{]{ H8S F0相关函数
!_ A[n3?'K2e v G7Hw+G(V0     atof,atol,atrtod,strtol,strtoul51Testing软件测试网k2J+z;JTs^4bm
表头文件51Testing软件测试网 V!r^ k"z/{1z'e
     #include<stdlib.h>51Testing软件测试网*PD u7]ndCn"BW8^
定义函数51Testing软件测试网,m7pa/I+_jTl
     int atoi(const char *nptr);51Testing软件测试网 Y$M t` l H*I8E
函数说明
Nql/f#Q6i0     atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。51Testing软件测试网8{6D@g B|
返回值
z,oa#I$Ezl@}Dd4w0     返回转换后的整型数。51Testing软件测试网G7lm B*r
附加说明51Testing软件测试网0K!Ig4XNy-`c
     atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。
KVpc^ Ja0范例51Testing软件测试网JBT:n%ZZmf
     /* 将字符串a 与字符串b转换成数字后相加*/
R$jW tmB0#include<stdlib.h>51Testing软件测试网E'[`1j%`
mian()
3s,d8XURl.z9~} m0{
R(B$Y*p i"n)V i0char a[]=”-100”;
X.?_ k~-U/}0char b[]=”456”;51Testing软件测试网U+x6?F;[|2?-kz_
int c;51Testing软件测试网)~4l@XnVbq:u1g@
c=atoi(a)+atoi(b);
)LV#s)Dm0printf(c=%d ”,c);
\CS.\7~Oqh:l0}51Testing软件测试网Dh:t$](~9XV+?
执行
&i} e]sQ#Y!cxD0     c=356
3snk2sR051Testing软件测试网F,Q8?'I$h1W g3{Q

^yQiho&j.d0
1f AZ4a'~$dKD!Qn0     51Testing软件测试网bs3j i0i C a
atol(将字符串转换成长整型数)51Testing软件测试网Y2e]~O
相关函数
V.H d#j%A/[d;z0     atof,atoi,strtod,strtol,strtoul51Testing软件测试网;p ?ud}8}?xQ*?
表头文件51Testing软件测试网 o Y5D*f4} hULE
     #include<stdlib.h>
jg5T;R)GG0定义函数51Testing软件测试网{4B8k{ AB&G9D*B4m j
     long atol(const char *nptr);51Testing软件测试网B?g/K;vb
函数说明51Testing软件测试网 yz ^)D A,G"^F.e
     atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。51Testing软件测试网B TKM4An4f
返回值
y/A\D_$[0     返回转换后的长整型数。51Testing软件测试网nh@)`$D$C+v(Zb
附加说明
g,R&kj7dK0     atol()与使用strtol(nptr,(char**)NULL,10);结果相同。
!TnYW.q gKX0范例
F zl'U;e&H:\0     /*将字符串a与字符串b转换成数字后相加*/51Testing软件测试网Bgw1}%c
#include<stdlib.h>51Testing软件测试网/dn o*{Q
main()
eD Uu:kR0{
jJr.d K|5~x"P0char a[]=”1000000000”;51Testing软件测试网sC*]BM,QAj XfJ
char b[]=” 234567890”;
G^/Z6Ok0long c;51Testing软件测试网rBzN_r@,nm-~5Jr
c=atol(a)+atol(b);
5K*K7t AN0printf(“c=%d ”,c);
F-[;N0PDC)r^W+r-i0}
i OF.Wp3w%M5e0执行
8| co2~da,r `9d0     c=1234567890
OsC tEMC+O0

j5W[yl0 51Testing软件测试网U'PI*kJN*I;\

51Testing软件测试网$U\.e!S n b
     51Testing软件测试网E fZ/U\Mi,X+e'b
gcvt(将浮点型数转换为字符串,取四舍五入)
&[ K3z){ M)U_+sH0相关函数51Testing软件测试网&@8H],Z!sT3{:J2[
     ecvt,fcvt,sprintf
({Kj*VqL0表头文件
t%B&m#_DeL0A0     #include<stdlib.h>51Testing软件测试网u`]#^Ecr'\&C4{%\![
定义函数
'u6V7Vn#{-J`)a#]0     char *gcvt(double number,size_t ndigits,char *buf);
5m7C H7ncgC%F0函数说明
9[-X mT9D n3G*j R K0     gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。
G1No;aJKC)pH:B&B `0返回值
U$F.y&K&l6ag`0     返回一字符串指针,此地址即为buf指针。
P`5KFJUb(`'H0附加说明51Testing软件测试网iF5`{0k$O!S7x+Z
     51Testing软件测试网:qQ5{%A6{
范例
Xx`)Q U&a0     #include<stdlib.h>
9D3_"dxf&J'xN0main()51Testing软件测试网-ig's d7r#b$h t
{51Testing软件测试网a!L];w*f*lG8S+{y,|
double a=123.45;
&Au3OO2O;G\ P0double b=-1234.56;51Testing软件测试网Spd},ZHN _*qM z
char *ptr;
{"w6h%{)N0\0int decpt,sign;51Testing软件测试网r@|4td8pUOv
gcvt(a,5,ptr);51Testing软件测试网$L5I4^!az9f!e
printf(“a value=%s ”,ptr);
k'n {&Tr0ptr=gcvt(b,6,ptr);
'K:D3Ib PWX0printf(“b value=%s ”,ptr);51Testing软件测试网%LLu F V
}
4u.u"q @.B4F$v0执行51Testing软件测试网q nFD,k$T
     a value=123.4551Testing软件测试网CkOf*w(LP[*Q
b value=-1234.5651Testing软件测试网6x M6M0P.p
51Testing软件测试网9W"u{4| ` EA*q7m

51Testing软件测试网b H Q2b9CD

51Testing软件测试网1|,Z,AV1cai z}8{D*v
     51Testing软件测试网+Ty i4v C,Tul
strtod(将字符串转换成浮点数)51Testing软件测试网:q7b$W b&jYv
相关函数
(g-q;k^h$i0     atoi,atol,strtod,strtol,strtoul51Testing软件测试网9tAY} Co2GI~
表头文件51Testing软件测试网nq|5q}m
     #include<stdlib.h>51Testing软件测试网 {)@)P#q/b[
定义函数
V3B*S9pI I)Ul0     double strtod(const char *nptr,char **endptr);
+b^wy+jq%L8S0函数说明
Q:Z;O3t[[6~$B0     strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。
h-]aaM"v g q7e;~ C0返回值
D%QP9V%K-@9ce?0     返回转换后的浮点型数。
TO3}@ES+n&Wg0附加说明51Testing软件测试网;U3c(p*b(}*O
     参考atof()。
Z*B#? M"^.D9K R0范例51Testing软件测试网n T ~ aGAO G
     /*将字符串a,b,c 分别采用10,2,16 进制转换成数字*/51Testing软件测试网;M8[@ Z6\4}.`] JM6R2wY
#include<stdlib.h>
b1ZG IJS0mian()
Y/S7|n zz3L0{
5u1Fh&b'D6x0char a[]=”1000000000”;51Testing软件测试网5C,do$w3^1f
char b[]=”1000000000”;
'E&{2t%s%ba0char c[]=”ffff”;
/m/sTg5U aON0printf(“a=%d ”,strtod(a,NULL,10));51Testing软件测试网`)o.e0sj$u
printf(“b=%d ”,strtod(b,NULL,2));51Testing软件测试网4h v]s%F~*J Obh
printf(“c=%d ”,strtod(c,NULL,16));51Testing软件测试网(Q2CI G(a {YCrGA
}
#M Uk~ S _F0执行51Testing软件测试网8u-T'i{j%L-{B
     a=100000000051Testing软件测试网RUyt"c8W"t
b=51251Testing软件测试网JI!? @#?%|
c=65535
(lvN YeXN)F j \0

bk:S3I-TD0

6Pw9AY4T X8G0}w,h6{%{0
$|cXDt;Z:t"@y!w0     51Testing软件测试网 yQlK)j9X-S6gR
strtol(将字符串转换成长整型数)
$^:o)j:j%S"X8vZ0相关函数51Testing软件测试网5@u@(H/g%} FY^
     atof,atoi,atol,strtod,strtoul
0?5Q9UN:LD)ov0表头文件51Testing软件测试网}0kW#xB5xWIMB
     #include<stdlib.h>51Testing软件测试网)DVH[ G ~&GB
定义函数51Testing软件测试网G wb n/|
     long int strtol(const char *nptr,char **endptr,int base);51Testing软件测试网U'm1}sWs'f\8^
函数说明51Testing软件测试网c I w*z!Q6y@
     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返回。51Testing软件测试网S ^ y!E9J,aR
返回值
?7}6p3G:J-X#k*w+d,f|~%F0     返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。51Testing软件测试网#t4_F7n.om Qs
附加说明51Testing软件测试网_8ZU/eU1l2M
     ERANGE指定的转换字符串超出合法范围。
"X/A"b8HZX%b0范例
4y*E6P:w(^NU0     /* 将字符串a,b,c 分别采用10,2,16进制转换成数字*/
,`q:H a$R[}+U0#include<stdlib.h>51Testing软件测试网-M2RQ@0M,O!}e
main()
:k)r)umy8y:M(p6u}U0{
&Rl-fq$F];oI0char a[]=”1000000000”;51Testing软件测试网[!t'vdV`@9_1?
char b[]=”1000000000”;
bz:P|[%I CI4W0char c[]=”ffff”;51Testing软件测试网N9zk,T'r_Fq
printf(“a=%d ”,strtol(a,NULL,10));51Testing软件测试网@|\ ^l
printf(“b=%d ”,strtol(b,NULL,2));
7w Z'kj/J0printf(“c=%d ”,strtol(c,NULL,16));51Testing软件测试网I9v8uW"Rg)D)nx.k
}
SSV!C'g6Ocd0执行51Testing软件测试网S(w)|'SRpF7F
     a=100000000051Testing软件测试网0D dcX'R%k
b=51251Testing软件测试网;]jY"j D@d TC H
c=65535
m-]L o&QSJ'S0

Z3t:e.GRCRYH0 51Testing软件测试网$_ A:CVN"x4@$h.j i

51Testing软件测试网,N;?!Z`O
     51Testing软件测试网b.l9@8P(~7K+`)N
strtoul(将字符串转换成无符号长整型数)51Testing软件测试网 X;` \ S S/R2c4D!V J8z
相关函数
Ksd|`2c {6P _0     atof,atoi,atol,strtod,strtol51Testing软件测试网0G%\d Zy/|5Q
表头文件51Testing软件测试网4c0[!T!Ud
     #include<stdlib.h>51Testing软件测试网v ~qQ [T0m
定义函数
qB)Z^2]2NSmJ0     unsigned long int strtoul(const char *nptr,char **endptr,int base);51Testing软件测试网%LGy? e X
函数说明
Ms4QM.q5{W/Wm0     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返回。
9Kp0x7HS{%`8pg^|0返回值
u J1KQ bO5L n0     返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。
q _GG)O3Kbo l2d0附加说明
0\&A$Ko4YC0     ERANGE指定的转换字符串超出合法范围。51Testing软件测试网~}+\*\ U4b
范例51Testing软件测试网D ~e~x5PT1X:F"b
     参考strtol()
5lup9U8W]wq ?3R051Testing软件测试网:DY/K6{^&F.i2L

,s[R&sLG&B0
X#[4b"Uf.R0     51Testing软件测试网7_.U-K9u2^-Vn7NC
toascii(将整型数转换成合法的ASCII 码字符)
.N1xL gj7Di}Ei0相关函数51Testing软件测试网J%FE9aAa.Z
     isascii,toupper,tolower
@3^b;gA1]N0表头文件51Testing软件测试网*S w;Bw6OT]+Z
     #include<ctype.h>51Testing软件测试网cAT5cRh
定义函数51Testing软件测试网\PK fu0eZDB2S
     int toascii(int c)51Testing软件测试网7F ^&f~-TPy @
函数说明51Testing软件测试网+`(bI H"X!x
     toascii()会将参数c转换成7位的unsigned char值,第八位则会被清除,此字符即会被转成ASCII码字符。
Eo j-Ur8U'P0返回值
T]'p { \9k0     将转换成功的ASCII码字符值返回。51Testing软件测试网ToZw\#D
范例51Testing软件测试网v8@o;F2BM
     #include<stdlib.h>51Testing软件测试网PCY6j-O6^ J
main()
SIXCZ]il0{
!P]E$E+H}h0int a=217;
yC2x Kd0G0char b;51Testing软件测试网~4W6skV2d
printf(“before toascii () : a value =%d(%c) ”,a,a);
;ANP4iZH0uU4p0b=toascii(a);51Testing软件测试网 _BS+GxX f3xr
printf(“after toascii() : a value =%d(%c) ”,b,b);
o!yJ wi p!Qq2c0}51Testing软件测试网~;MA{v
执行
0u7D"D j g0     before toascii() : a value =217()
)H(i N-e5?5b-pC0after toascii() : a value =89(Y)51Testing软件测试网u9U\5r$xO!{];D.O

rxP@6km/J)LV0 51Testing软件测试网r+m-i;x0h5E X&m6O.?Z+A6q


1l0O o S t;f3K:DU0     51Testing软件测试网T5ex4T df}D9W
tolower(将大写字母转换成小写字母)51Testing软件测试网%l)F*d*L|
相关函数51Testing软件测试网CA@;DH
     isalpha,toupper
$L q/f#gt[ W0表头文件51Testing软件测试网n Gd PD
     #include<stdlib.h>51Testing软件测试网5b3~e b,B``
定义函数51Testing软件测试网 M*a!~sK@['U)E
     int tolower(int c);
u2sj)\#M0函数说明
+v"S@-r aYCv0     若参数c为大写字母则将该对应的小写字母返回。51Testing软件测试网w,r,Z8gU]M%M
返回值51Testing软件测试网}*X O q1A X7M
     返回转换后的小写字母,若不须转换则将参数c值返回。51Testing软件测试网~] {Zu.J
附加说明51Testing软件测试网0oEk6PawA @
     51Testing软件测试网B8tMv2T/Z P8L
范例
(w7gl P/j{ [ o0     /* 将s字符串内的大写字母转换成小写字母*/51Testing软件测试网,?5aJ,Y iZB _
#include<ctype.h>
JS-i;p1zB Zih0main()51Testing软件测试网)Iy%Go ]y8]6h1X A
{
8["VG ]/Ov0char s[]=”aBcDeFgH12345;!#$”;51Testing软件测试网_VU,bl.o {
int i;
s0b`;s:cm%w a0printf(“before tolower() : %s ”,s);
rn4V [C o0for(i=0;I<sizeof(s);i++)51Testing软件测试网 Z]N `Y)u
s=tolower(s);
$\5qEX.KO%To1y'K0printf(“after tolower() : %s ”,s);
/e.j2w ~3z6L0}
FH`%to8n3X-At0执行
W qor4q1zy#d$h0     before tolower() : aBcDeFgH12345;!#$51Testing软件测试网b0F%JW.s%Gy
after tolower() : abcdefgh12345;!#$
#Rc dC@)E:_bl0

;O*I(Y"s3Ex9^0

)?o Vzh-GOB-B0
/~0oy`0I*C0     51Testing软件测试网.C&f1B o |%S4e)Z
toupper(将小写字母转换成大写字母)
3oLW"^-k/I0相关函数51Testing软件测试网*Wh_(G'Hhp#L
     isalpha,tolower
0m'lL$t sa{0表头文件
Mt)HJv3i!v0     #include<ctype.h>
x+O(o2Jxp5s;T0定义函数51Testing软件测试网+y?RlssA7g
     int toupper(int c);
"A9[T]#CxD0函数说明51Testing软件测试网"o,Jr~-vl5R+~X
     若参数c为小写字母则将该对映的大写字母返回。51Testing软件测试网BV9n sJ6VI
返回值51Testing软件测试网| {)Z];C[JZzX6S8w
     返回转换后的大写字母,若不须转换则将参数c值返回。51Testing软件测试网KaG W5G
附加说明51Testing软件测试网&U!}TCGuU
     51Testing软件测试网OfJ#r`M u ` x
范例51Testing软件测试网D8^!GHr yW
     /* 将s字符串内的小写字母转换成大写字母*/
B e$F.|#@$s0#include<ctype.h>
Ba+e.w3D`*nG0main()
"W6r oGd0{51Testing软件测试网t'gl`0@ e2Y.BJ/?*z
char s[]=”aBcDeFgH12345;!#$”;
(zS$J*Q\ V#v!t5\3e0int i;51Testing软件测试网)w] J v}K-\L$~{-c
printf(“before toupper() : %s ”,s);
R.MJ2Jw _0for(i=0;I<sizeof(s);i++)
&W(|!EmrBx0s=toupper(s);51Testing软件测试网 W7s*}9v~
printf(“after toupper() : %s ”,s);
a|'j)m4~u8S0|'H~F0}51Testing软件测试网"[*`(K8G$f
执行
$\8G oA ba*K0     before toupper() : aBcDeFgH12345;!#$
D'?z0|;z `6s0after toupper() : ABCDEFGH12345;!#$51Testing软件测试网,gkFne _l,X9`S


TAG: 类型转换 C语言

 

评分:0

我来说两句

日历

« 2024-03-21  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 46444
  • 日志数: 47
  • 建立时间: 2009-09-03
  • 更新时间: 2010-06-10

RSS订阅

Open Toolbar