c++中怎样编写一个函数把整型数字转换成字符串??

可以教我思路,自己一直没想明白。

#include<stdio.h>

int  main()
{
    char str[100];
    char str1[100];
    memset(str,0,100);
    memset(str1,0,100);
    int a = 12345;
    int c = 0;
    int i;
    while(1) {
        str[c] = (a % 10) + '0'; // 模10得到最低位,+‘0’变成字符
        c++;
        a = a / 10;  // 除以10去掉已求出的最后低位,再循环计算
        if (a == 0) {
            break;
        }
    }
    for(i = 0, c= c-1 ; c >= 0; i++,c--) {
        str1[i] = str[c];
    }
    
    printf("%s\n",str1);
    return 0;
}

这只是示例思路,实际编写时你要考虑动态分配字符串空间以容纳合适的字符长度以及优化效率的问题。

追问

memset没申明?还是编译器问题?

追答

前面加一行:
#include

追问

你能告诉我为什么要这样做吗??没看懂程序是什么意思。主要的思想能大致说下吗??先谢谢了。

追答int  main()
{
    char str[100];      // 声明字符数组
    char str1[100];
    memset(str,0,100);  // 初始化数组内容全部为0,
    memset(str1,0,100); // 同上
    int a = 12345;
    int c = 0;
    int i;
    while(1) {
        // 模10得到最低位的数值,例如12345%10得到5
        // 5 + 字符 '0' 得到字符 '5' ,放入数组
        str[c] = (a % 10) + '0'; // 模10得到最低位,+‘0’变成字符
        c++;   // 数组下标+1,下一个字符放入下一位置
        // 算出最低位后去掉,准备计算下一位
        // 如 12345 / 10 得到 1234,然后循环继续处理
        a = a / 10;  // 除以10去掉已求出的最后低位,再循环计算
        // 如果除以10后得到0,证明全部数位都处理了,退出循环
        if (a == 0) {
            break;
        }
    }
    // 上面循环结束后,str得到的是 "54321"的倒序
    // 所以循环处理将12345放入另外一个数组
    for(i = 0, c= c-1 ; c >= 0; i++,c--) {
        str1[i] = str[c];
    }
     
    printf("%s\n",str1);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-04

用对10取余,取出一个数位,加上ASC码 ‘0’ 强转成char


第2个回答  2014-03-04
char *itoa(int value ,char *string ,int radix )//将整数value 转换成字符串存入string 指向的内存空间 ,radix 为转换时所用基数(保存到字符串中的数据的进制基数)

自己写的话求出整数的每一位值,将其转换成其对应的ASCII码就可以了
第3个回答  2014-03-04
可以参考 atoi函数
相似回答