打印字符串显示符号

时间:2016-10-14 11:38:52

标签: c arrays string itoa

我试图使用指针编写ITOA(整数到数组)函数。

所以这就是我到目前为止所得到的。我调试了,它工作得很好。问题是,印刷本身并不起作用。我添加了两个屏幕截图。

会感激一些帮助。

int num_length(int number)
{
    int count = 0;

    while (number > 0)
    {
        count++;
        number /= 10;
    }

    return count;
}

void itoa(int number, char *strptr)
{
    int number_len = num_length(number);
    char *start = strptr;
    strptr += number_len - 1;

    while (strptr >= start)
    {
        *strptr = number % 10;
        number /= 10;
        strptr--;
    }
}

void print_string(char *strptr)
{
    while (*strptr != '\0')
    {
        printf("%c", *strptr);
        strptr++;
    }
}

void main(void)
{
    int number;
    char number_in_string[N] = { '\0' };
    char *strptr = &(number_in_string[0]);
    printf("Enter a number: ");
    scanf_s("%d", &number);

    itoa(number, strptr);

    print_string(number_in_string);
    getch();
}

1 个答案:

答案 0 :(得分:2)

如果您正在尝试获取一系列数字字符(正如true (a)函数所示),您需要适当调整值:

print_string

根据您的调试输出(*strptr = number % 10 + '0'; '\x2''\x5'),您正确获取该数字的各个数字,但这些数字是二进制值,而不是字符表示。

将前者转换为后者涉及添加'\x5'(例如,如果您使用ASCII,则为0x30)。 C保证数值是连续的,因此这是安全的。

(a) ......顺便说一句,这可以用简单的方法代替:

'0'

printf("%s", number_in_string); 函数中。