如何在没有C库的情况下将整数转换为char?

在交流编程练习中,我被要求在不使用C库的情况下将int转换为char。

知道如何去做吗?

编辑:我的意思是int是内置的C / C ++类型

谢谢。

投了吗?

char c = (char)i; 

或许你的意思是这个?

 char c = (char)('0' + i); 

我确定这不是你的意思…我猜你想要创建一个字符串(字符数组)? 如果是这样,那么你需要从最低有效数字开始一次转换一位数。 你可以用伪代码递归地做到这一点:

 function convertToString(i) if i < 10 return convertDigitToChar(i) else return convertDigitToString(i / 10) concat convertDigitToChar(i % 10) 

这里/是整数除法, %是整数模数。 您还需要处理负数。 这可以通过首先检查您是否有负数,在aboslute值上调用函数并在必要时添加减号来完成。

在C中,对于性能,您可能会使用循环而不是使用递归来实现它,并且可以直接修改字符数组的内容而不是连接字符串。

如果你真的想要一个字符串:

 #include  char *tochar(int i, char *p) { if (i / 10 == 0) { // No more digits. *p++ = i + '0'; *p = '\0'; return p; } p = tochar(i / 10, p); *p++ = i % 10 + '0'; *p = '\0'; return p; } int main() { int i = 123456; char buffer[100]; tochar(i, buffer); printf("i = %s\n", buffer); } 

为了完整性,如果任务是将int转换为字符串作为anthares嫌疑人,您可以使用Mark的第二个答案来转换整数的每个数字。 要获得每个数字,您必须查看除法和模运算符。