读书人

将数目字转换成字符串的实现

发布时间: 2013-03-29 14:24:52 作者: rapoo

将数字转换成字符串的实现
#include<stdio.h>
#include<stdlib.h>
main()
{
long p,n,m;
int i,k=0;
char *s;
printf("input a number:");
scanf("%d",&m);
p=n=m;
if(n<0) n=n*(-1);
while(n>0)
{
n/=10;
k++;
}
if(p<0){
s=(char *)calloc(k+1,sizeof(char));
p=p*(-1);
for(i=k;i>=1;i--)
{
s[i]=p%10+'0';
p/=10;

}
s[0]='-';
for(i=0;i<k+1;i++)
printf("%c",s[i]);
}
else {
s=(char *)calloc(k,sizeof(char));
for(i=k-1;i>=0;i--)
{
s[i]=m%10+'0';
m/=10;
}

for(i=0;i<k;i++)
printf("%c",s[i]);
}
}
我写的这个实现代码虽然能通过但总觉得好像废话太多,求各位大神优化一下 c
[解决办法]


#include<stdio.h>
#include<stdlib.h>
int main()
{
long p,n,m;
int i,k=0;
char s[50];
printf("input a number:");
scanf("%d",&m);
itoa(m, s, 10);//整型转字符串
printf("%s\n", s);
return 0;
}

[解决办法]
// 字符串翻转,返回翻转的字符个数
size_t rever(char *dest,const char *src)
{
int n = strlen(src) - 1;
size_t i = 0;
for (;n >= 0;dest++,n--)
{
*dest = *(src + n);
++i;
}
return i; // 注意返回翻转的字符个数
}


// 返回的内存地址指针需要调用者释放
char * Myitoa(int n)
{
char *str1 = new char[20];
memset(str1 ,0 ,20);

char str[20] = {0};
int i = 0;
if(0 == n)
{
strcpy_s(str1 ,2 ,"0");
return str1;
}
else if (n < 0)
{
str[0] = '-';
str1[0] = '-';
n*=-1;
i = 1;
}

while(n)
{
str[i++] = n%10 + 48;
n /= 10;
}

// 反转字符串
if (str[0] == '-')
{
rever(str1+1 ,str+1);
}
else
rever(str1 ,str);
return str1;
}

[解决办法]
直接使用sprintf应该就能满足你的要求吧!
[解决办法]

int x = 243622;
char str[20];
sprintf(str, "%d", x);

这样就可以了

读书人网 >C语言

热点推荐