如何使用C将整数转换为字符数组

tou*_*sif 13 c

我想在C中将整数转换为字符数组.

输入:

int num = 221234;
Run Code Online (Sandbox Code Playgroud)

结果相当于:

char arr[6];
arr[0] = '2';
arr[1] = '2';
arr[2] = '1';
arr[3] = '2';
arr[4] = '3';
arr[5] = '4';
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Rav*_*ale 18

利用log10函数来确定数字的位数,如下所示

char * toArray(int number)
    {
        int n = log10(number) + 1;
        int i;
      char *numberArray = calloc(n, sizeof(char));
        for ( i = 0; i < n; ++i, number /= 10 )
        {
            numberArray[i] = number % 10;
        }
        return numberArray;
    }
Run Code Online (Sandbox Code Playgroud)

或者另一种选择是 sprintf(yourCharArray,"%ld", intNumber);

  • 这不是返回数字吗? (4认同)
  • 您的方法有 4 个问题: 1. 您没有为 NULL 字符分配足够的空间;2. 输出的字符不是ASCII,而是INT;3. 如果输入0(零),则不返回任何内容;4.输出字符串反转 (2认同)

小智 10

' sprintf '可以正常工作,如果你的第一个参数是一个指向一个字符的指针(指向一个字符的指针是'c'中的一个数组),你必须确保你有足够的空间容纳所有的数字并终止'\ 0'.例如,如果整数使用32位,则最多包含10位十进制数.所以你的代码应该是这样的:

int i;
char s[11]; 
...
sprintf(s,"%ld", i);
Run Code Online (Sandbox Code Playgroud)