unix 为什么我的ft_print_comb函数给予任何输出?

g6ll5ycj  于 2022-11-04  发布在  Unix
关注(0)|答案(2)|浏览(157)

# include<stdio.h>

# include<unistd.h>

void ft_putchar(char x){
    write(1, &x, 1);
}
void ft_print_comb()
{
    char i, j, k;
    i = '0';
    while(i <= 7){
        i++;
        j = i+1;
        while(j <= 8){
            j++;

            k = j+1;
            while(k <= 9){
                k++;
                    ft_putchar(i);
                    ft_putchar(j);
                    ft_putchar(k);
                    ft_putchar(',');
                    ft_putchar(' ');
            }
            }
        }
}
int main(){
    ft_print_comb();
    return 0;
}

我试着做了一些修改,但是它要么破坏了代码,要么一直没有输出。我试着做的是创建一个函数,以升序显示三个不同数字的所有不同组合,按升序列出。不允许使用for循环和printf函数。

qzwqbdag

qzwqbdag1#

因为您使用的是char s,所以您应该比较字符文字而不是整数。例如,while循环永远不会进入,因为'0'的ASCII码是48,大于7。

while (i <= '7') {
    j = i + 1;
    while (j <= '8') {
        k = j + 1;
        while (k <= '9') {
            ft_putchar(i);
            ft_putchar(j);
            ft_putchar(k);
            ft_putchar(',');
            ft_putchar(' ');
            k++;
        }
        j++;
    }
    i++;
}
dbf7pr2w

dbf7pr2w2#

i是一个值为48的字符(ASCII码为'0'),因此不会进入while循环。请按以下方式设置i:

i = 0;

相关问题