首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-03-29 
将数字转换成字符串的实现#includestdio.h#includestdlib.hmain(){long p,n,mint i,k0char *sprin

将数字转换成字符串的实现
#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);

这样就可以了

热点排行