25

我想将整数转换为 C 中的字符数组。

输入:

int num = 221234;

结果等价于:

char arr[6];
arr[0] = '2';
arr[1] = '2';
arr[2] = '1';
arr[3] = '2';
arr[4] = '3';
arr[5] = '4';

我怎样才能做到这一点?

4

5 回答 5

23

使用该log10函数来确定位数并执行以下操作:

char * toArray(int number)
{
    int n = log10(number) + 1;
    int i;
    char *numberArray = calloc(n, sizeof(char));
    for (i = n-1; i >= 0; --i, number /= 10)
    {
        numberArray[i] = (number % 10) + '0';
    }
    return numberArray;
}

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

于 2013-01-28T15:06:57.517 回答
23

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

int i;
char s[11]; 
...
sprintf(s,"%ld", i);
于 2013-01-28T15:22:37.880 回答
3

简单的方法是使用sprintf. 我知道其他人提出了建议itoa,但是 a) 它不是标准库的一部分,并且 b)sprintf为您提供了没有的格式化选项itoa

于 2013-01-28T15:06:11.547 回答
1

使用 itoa,如此处所示。

char buf[5];
// Convert 123 to string [buf]
itoa(123, buf, 10);

buf将是您记录的字符串数组。您可能需要增加缓冲区的大小。

于 2013-01-28T15:04:53.903 回答
0

您可以尝试使用itoa。另一种选择是使用sprintf

于 2013-01-28T15:04:37.937 回答