在C中将int转换为char?

时间:2014-01-17 22:13:08

标签: c arrays char int type-conversion

我正在尝试将一个int添加到char数组中。我的(破损)代码如下,

string[i] = (char) number;

i是数组的某个int索引,number是一个整数。实际上,在输入时我注意到如果数字超过一位数就会出现另一个问题,所以如果你对这个问题有一些答案那就太棒了!

4 个答案:

答案 0 :(得分:5)

根据修订后的要求'0'如果string[i]number == 0number1之间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完成