我想要在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';
我该怎么做?
我想要在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';
我该怎么做?
int i;
char s[11];
...
sprintf(s,"%ld", i);
利用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);
log10(number)
周围加上floor()
是必要的,以避免舍入误差...但我不确定...无论如何+1个好答案。 - user4227915for ( i = n-1; i >= 0; --i, number /= 10 )
,以便输出不被反转,并将循环中的行改为numberArray[i] = (number % 10)+'0';
以将int转换为char。 - Juan Pablo使用sprintf
是一种简单的方法。我知道其他人建议使用itoa
,但是a)它不是标准库的一部分,b)sprintf
提供了itoa
没有的格式选项。
char buf[5];
// Convert 123 to string [buf]
itoa(123, buf, 10);
buf
将会是一个字符串数组,正如您所记录的那样。您可能需要增加缓冲区的大小。
itoa
不是标准的C函数,在所有实现中都可能不存在。 - interjayusing namespace std;
。http://en.cppreference.com/w/是一个由社区管理的参考资料,准确性不亚于前者,并且没有示例中的不良习惯。 - StoryTeller - Unslander Monica