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

时间:2010-02-27 19:35:21

标签: c

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

知道如何去做吗?

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

感谢。

3 个答案:

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