代码
#include
<
stdio.h
>
#include
<
stdlib.h
>
char
*
digitToAlpha (
int
val,
char
*
buf, unsigned radix);
int
main(
int
argc,
char
*
argv[]){
int
iNum
=
1000
;
char
strNum[
10
]
=
""
; digitToAlpha(iNum,strNum,
10
); printf(
"
%s\n
"
,strNum); system(
"
PAUSE
"
);
return
0
;}
/*
功能:将数值转换为字符串参数:第一个是要转化的整数 第二个是转化后的字符串 第三个是要转化整数的基数,就是说如果基数是10,就可以直接转化,如果不是10,是其他值(2-36之间),则先把该整数转化为该基数的数后,再转化为字符串
*/
char
*
digitToAlpha (
int
val,
char
*
buf, unsigned radix) {
char
*
p;
/*
pointer to traverse string
*/
char
*
firstdig;
/*
pointer to first digit
*/
char
temp;
/*
temp char
*/
unsigned digval;
/*
value of digit
*/
p
=
buf;
if
(val
<
0
) {
/*
negative, so output '-' and negate
*/
*
p
++=
'
-
'
; val
=
(unsigned
long
)(
-
(
long
)val); } firstdig
=
p;
/*
save pointer to first digit
*/
do
{ digval
=
(unsigned)(val
%
radix); val
/=
radix;
/*
get next digit
*/
/*
convert to ascii and store
*/
if
(digval
>
9
)
*
p
++
=
(
char
) (digval
-
10
+
'
a
'
);
/*
a letter
*/
else
*
p
++
=
(
char
) (digval
+
'
0
'
);
/*
a digit
*/
}
while
(val
>
0
);
/*
We now have the digit of the number in the buffer, but in reverse order. Thus we reverse them now.
*/
*
p
--
=
'
\0
'
;
/*
terminate string; p points to last digit
*/
do
{ temp
=
*
p;
*
p
=*
firstdig;
*
firstdig
=
temp;
/*
swap *p and *firstdig
*/
--
p;
++
firstdig;
/*
advance to next two digits
*/
}
while
(firstdig
<
p);
/*
repeat until halfway
*/
return
buf; }
该程序的测试环境:
WinXPSP2,Dev C++ 4.9.9.2
转载于:https://www.cnblogs.com/feima-lxl/archive/2010/08/05/1793159.html
相关资源:整形数组与字符数组相互转换
转载请注明原文地址: https://win8.8miu.com/read-1484859.html