如何在没有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的第二个答案来转换整数的每个数字。 要获得每个数字,您必须查看除法和模运算符。