/*
修改数字转换为字符串的itoa函数,使其可以处理最大的负数。
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
void reverse(char s[])
{
int c,i,j;
for (i=0,j=strlen(s)-1;i<j;i++,j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
//printf("%s\n",s);
}
void itoa(int n,char s[])
{
int i,sigh;
if ((sigh=n)<0)
{
n = -n;
}
i = 0;
do
{
s[i++] = n%10 + '0';
} while ((n/=10)>0);
if(sigh<0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
//printf("%s\n",s);
}
//修正后的itoa函数,可以处理机器支持的最大负数
void itoa_new(int n ,char s[])
{
int i,sigh;
sigh = n;
i = 0;
do
{
s[i++] = abs(n%10)+'0';
} while ((n/=10)!=0);
if (sigh<0)
{
s[i++] = '-';
}
s[i] = '\0';
reverse(s);
}
void main()
{
int i = -2147483648;
char str1[100];
itoa_new(i,str1);
printf("%s\n",str1);
}
C程序设计语言练习3-4
最新推荐文章于 2020-04-17 18:10:18 发布