在C中从int创建char数组

时间:2015-03-27 12:36:44

标签: c

如何将int放入char数组?

int x = 21, i = 3;
char length[4];

while(i >= 0) {
    length[i] = (char) (x % 10);
    x /= 10;
    i--;
} printf("%s\n", length);

// length should now be "0021"

字符串显示为空白。

注意:这不是“如何在C ++中从int转换为字符?”的副本。因为我还需要填充。即“0021”而不是“21”

2 个答案:

答案 0 :(得分:6)

你没有得到数字的字符代码,你正在使用数字,就好像它是自己的字符代码一样。它应该是:

length[i] = '0' + (x % 10);

您还需要在length数组中为终止空字符添加额外元素:

char length[5];
length[4] = 0;

答案 1 :(得分:2)

您的代码中的问题基本上是1 != '1',即字符不是整数,您需要检查ascii表以查看ascii代码代表字符'1'但是您没有'我真的需要知道这个数字,你可以使用'1'注意单个qoutes。

但你也没有nul终止你的字符串,你需要在字符串的末尾添加'\0',所以

int x = 21, i = 3;
char length[5];

length[4] = '\0';
while (i >= 0) 
{
    length[i--] = x % 10 + '0';
    x          /= 10;
} 
printf("%s\n", length);

应该有用,但是不必要,你可以

snprintf(length, sizeof(length), "%0*d", padding, x);
/*                                         ^ this is how many characters you want */

请注意sizeof有效,因为lengthchar数组,不要将其与字符串的长度混淆。