淡泊明志 宁静致远
分类: C/C++
2006-11-06 08:52:49
请编写一个 C 函数,该函数将给定的一个整数转换成字符串。
【本程序在Dev C++ 4.9.9.2 下编译通过】
下面的这个算法比较傻,垃圾的很,显示了一个C语言新手
所应有的水平。而且处理不完全,算法考虑不周到,代码
过于啰嗦,不够简洁,紧接着这个后面会有一个较为
完全的代码。
char * IntToStr(int Number)
{
char
ch,*str,*t;
int
i,Temp,Len=0;
str = (char
*)malloc(11*sizeof(char));
t = str;
Temp =Number;
while(Temp !=
0)
{
*t = (Temp%10)+0x30;
Temp = Temp/10;
Len++;
t++;
}
*t = '\0';
t = str;
for(i=0;i
{
ch = *t;
*t = *(t+Len-2*i-1);
*(t+Len-2*i-1) = ch;
t++;
}
return str;
}
main()
{
puts(IntToStr(123456));
}
下面是较为完全,较为简洁的代码。如发现什么错误,希望网友
能及时提出,俺将会给予改正。这里要谢谢
“阿郎” 网友的提醒。
char * IntToStr(int Number)
{
char
ch,*str,*right,*left;
unsigned int Value;
str = (char
*)malloc(12*sizeof(char));
left = right = str;
//如果是负数,则应加上负号,left、right向后走。
if(Number
< 0)
{
Value = -Number;
*str = '-';
left++,right++;
}
else
Value = (unsigned)Number;
//把数字转换成字符串(倒置的)
while(Value)
{
*right = (Value%10)+0x30;
Value = Value/10;
right++;
}
*right-- = '\0';
//把倒置的字符串正放过来
while(right
> left)
{
ch = *left;
*left++ = *right;
*right-- = ch;
}
return str;
}
main()
{
char * str;
str = IntToStr(1234567);
puts(str);
free(str);
str = IntToStr(-1234567);
puts(str);
free(str);
str =
IntToStr(0x7FFFFFFF);
puts(str);
free(str);
str = IntToStr(-0x7FFFFFFF);
puts(str);
free(str);
system("pause");
}