我正在尝试将一个int添加到char数组中。我的(破损)代码如下,
string[i] = (char) number;
i
是数组的某个int索引,number
是一个整数。实际上,在输入时我注意到如果数字超过一位数就会出现另一个问题,所以如果你对这个问题有一些答案那就太棒了!
答案 0 :(得分:5)
根据修订后的要求'0'
如果string[i]
为number == 0
,number
与1
之间9
的值相似,然后您需要将'0'
添加到数字:
assert(number >= 0 && number <= 9);
string[i] = number + '0';
逆转换用于将数字字符转换回相应的数字:
assert(isdigit(c));
int value = c - '0';
答案 1 :(得分:2)
如果您想将单个数字转换为数字字符,可以使用
string[i] = (char) (number+'0');
当然你应该检查int值是否介于0和9之间。如果你有任意数字而你想将它们转换为字符串,你应该使用snprintf
,但当然,你可以' t将它挤在char aynmore中,因为每个char代表一个数字。
如果通过手动创建数字表示,则不应忘记C字符串最后需要\0
个字节。
答案 2 :(得分:1)
你想要使用sprintf()。
sprintf(string,'%d',number);
我相信。
编辑:要回答问题的第二部分,你要将一个整数转换为一个字符,它只保留一个数字。你想把它放在char *或char数组中。
答案 3 :(得分:0)
使用asprintf:
char *x;
int size = asprintf(&x, "%d", number);
free(x);
更好,因为您不必分配内存。由asprintf完成