在c编程练习中,我被要求在不使用C库的情况下将int转换为char。
知道如何去做吗?
编辑:我的意思是int是内置的C / C ++类型
感谢。
答案 0 :(得分:5)
投吧?
char c = (char)i;
或者你的意思是这个?
char c = (char)('0' + i);
我确定这不是你的意思...我猜你想要创建一个字符串(char数组)?如果是这样,那么您需要从最低有效数字开始一次转换一位数。你可以用伪代码递归地执行:
function convertToString(i)
if i < 10
return convertDigitToChar(i)
else
return convertDigitToString(i / 10) concat convertDigitToChar(i % 10)
这里/
是整数除法,%
是整数模。您还需要处理负数。这可以通过首先检查您是否有负数,在aboslute值上调用函数并在必要时添加减号来完成。
在C中,为了提高性能,您可能会使用循环而不是使用递归来实现它,并且可以直接修改字符数组的内容而不是连接字符串。
答案 1 :(得分:3)
如果你真的想要一个字符串:
#include <stdio.h>
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);
}
答案 2 :(得分:1)
为了完整性,如果任务是将int转换为字符串作为anthares嫌疑人,则可以使用Mark的第二个答案来转换整数的每个数字。要获得每个数字,您必须查看除法和模运算符。