首页 > 解决方案 > 打印字符而不是数字时(C 程序)

问题描述

我正在尝试打印这样的数字升序:00 01, 00 02, 00 03,..., 00 99, 01 02, ..., 97 99, 98 99. 不幸的是,当 C 程序在数字(最后一个数字)中打印 ASCII 表中的特殊字符时d,它应该只达到数字 9。如何使循环不打印 ASCII 字符而只打印数字?我不能使用printf().

#include<unistd.h>

void    print_character_comma(char a, char b, char c, char d)
{
    write(1, &a, 1);
    write(1, &b, 1);
    write(1, " ", 1);
    write(1, &c, 1);
    write(1, &d, 1);
    if (!(a == 57 && b == 56 && c == 57 && d == 57))
        write(1, ", ", 2);
}

void    comb(char a, char b, char c, char d)
{   
    while (a <= 57)
    {
        while (b <= 56)
        {
            c = a;
            while (c <= 57)
            {
                d = 1;
                while (d <= 57)
                {
                    print_character_comma(a, b, c, d);
                    d++;
                }
                d = 48;
                c++;
            }
            c = 48;
            b++;
        }
        b = 48;
        a++;
    }
}

void    ft_print_comb2(void)
{
    comb('0', '0', '0', '0');
}

int main()
{
    ft_print_comb2();
}

标签: cwhile-loopprinting

解决方案


comb()你有:

d = 1 ;

您打算在哪里:

d = '1' ;

请注意,comb()您还显式分配cd覆盖传递的参数。因此这些参数是不必要的。因此删除它们:

void comb(char a, char b)
{   
    char c, d ;
    ...
}

产生相同的结果。


推荐阅读