Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 打印字符串显示符号_C_Arrays_String_Itoa - Fatal编程技术网

C 打印字符串显示符号

C 打印字符串显示符号,c,arrays,string,itoa,C,Arrays,String,Itoa,我正在尝试使用指针编写一个ITOA(整数到数组)函数 这就是我目前得到的。我调试过了,效果很好。问题是,打印本身不起作用。我正在添加两个屏幕截图 如果你能帮忙,我将不胜感激 int num_length(int number) { int count = 0; while (number > 0) { count++; number /= 10; } return count; } void itoa(int n

我正在尝试使用指针编写一个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();
}


如果您试图获取一个数字字符数组(从
print_string
(a)函数可以看出),则需要适当调整值:

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

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


(a) 。。。顺便说一下,可以用一个简单的

printf("%s", number_in_string);

在您的代码>主< /代码>函数.< /p>不要垃圾邮件标签-这不是C++。<代码> *STRPTR =号码% 10;<代码>->

*strprtr=(数字%10)+“0”打印字符串:printf(“%s”,我的\u null\u终止\u str)只是一个想法。@Maya“我调试过,效果很好。”好吧,那怎么了?