如何将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”
答案 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
有效,因为length
是char
数组,不要将其与字符串的长度混淆。