You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除C语言程序输出结果中的最后一个逗号?

解决ft_print_comb函数末尾多余逗号的问题

你的代码主要有两个问题导致末尾逗号无法去除:

  • else分支没有用花括号包裹,导致write(", ", 2);和k++;每次循环都会执行,哪怕是最后一个组合
  • 硬编码判断i=='7' && j=='8'的写法不仅死板,还存在write(1, '1 ', 1);的错误(第二个参数应该是字符串地址,不是字符字面量)

下面提供两种可行的修复方案:

方案1:修正原逻辑,判断当前是否为最后一个组合

调整判断条件,确保只有非最后一个组合才输出逗号,同时修复代码块的花括号问题:

#include<stdio.h>   
#include<unistd.h>

void ft_putchar(char x, char y, char z){
    write(1, &x, 1);
    write(1, &y, 1);
    write(1, &z, 1);
}

void ft_print_comb()
{
    char i, j, k;
    i = '0';
    while (i <= '7') {
        j = i + 1;
        while (j <= '8') {
            k = j + 1;
            while (k <= '9') {
                ft_putchar(i, j, k);
                // 判断是否是最后一个组合:789
                if (!(i == '7' && j == '8' && k == '9')) {
                    write(1, ", ", 2);
                }
                k++;
            }
            j++;
        }
        i++;
    }
}

int main(){
    ft_print_comb();
    return 0;
}

方案2:更优雅的写法(避免末尾判断)

先打印第一个组合,之后的每个组合都先输出逗号再打印数字,从根源上避免末尾出现逗号:

#include<stdio.h>   
#include<unistd.h>

void ft_putchar(char x, char y, char z){
    write(1, &x, 1);
    write(1, &y, 1);
    write(1, &z, 1);
}

void ft_print_comb()
{
    char i, j, k;
    // 先打印第一个组合012
    ft_putchar('0', '1', '2');
    
    i = '0';
    while (i <= '7') {
        j = i + 1;
        while (j <= '8') {
            k = j + 1;
            // 跳过第一个组合的打印
            if (i == '0' && j == '1' && k == '2') {
                k++;
                continue;
            }
            while (k <= '9') {
                // 先输出逗号,再打印组合
                write(1, ", ", 2);
                ft_putchar(i, j, k);
                k++;
            }
            j++;
        }
        i++;
    }
}

int main(){
    ft_print_comb();
    return 0;
}

这两种方案都能正确输出所有升序三位数字组合,且末尾不会有多余逗号。

内容的提问来源于stack exchange,提问作者user13350466

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:18:22