如何在 c 中的最后一个数字后停止打印逗号和 space

How to stop printing comma and space after last digit in c

这是我写的程序:

int main(void)
{
    int d1, d2;

    d1 = 48;
    while (d1 < 58)
    {
        d2 = d1 + 1;
        while (d2 < 58)
        {
            putchar(d1);
            putchar(d2);
            putchar(',');
            putchar(' ');
            d2++;
        }
        d1++;
    }

    putchar(10);
    return (0);
}

程序输出如下:

01, 02, 03, 04, 05, 06, 07, 08, 09, 12, 13, 14, 15, 16, 17, 18, 19, 23, 24, 25, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 45, 46, 47, 48, 49, 56, 57, 58, 59, 67, 68, 69, 78, 79, 89, $

我想要这样的输出:

01, 02, 03, 04, 05, 06, 07, 08, 09, 12, 13, 14, 15, 16, 17, 18, 19, 23, 24, 25, 26, 27, 28, 29, 34, 35, 36, 37, 38, 39, 45, 46, 47, 48, 49, 56, 57, 58, 59, 67, 68, 69, 78, 79, 89$

如何让逗号停在最后一位数字之前?

有很多方法可以解决您的问题。您可以在除第一个输出之外的每个输出之前打印一个分隔符。

另请注意,使用 '0''9' 而不是硬编码 ASCII 值(例如 48...

会更具可读性

这是修改后的版本:

#include <stdio.h>

int main() {
    int d1, d2, n = 0;

    for (d1 = '0'; d1 <= '9'; d1++) {
        for (d2 = d1 + 1; d2 <= '9'; d2++, n++) {
            if (n > 0) {
                putchar(',');
                putchar(' ');
            }
            putchar(d1);
            putchar(d2);
        }
    }
    putchar('\n');
    return 0;
}

这是使用分隔符字符串的替代方法:

#include <stdio.h>

int main() {
    int d1, d2;
    const char *sep = "";

    for (d1 = '0'; d1 <= '9'; d1++) {
        for (d2 = d1 + 1; d2 <= '9'; d2++) {
            fputs(sep, stdout);
            sep = ", ";
            putchar(d1);
            putchar(d2);
        }
    }
    putchar('\n');
    return 0;
}

@chqrlie的不同方式,即在每个字符前打印分隔符。
在第一个字符之前,分隔符是空字符,对于后续字符,分隔符是 ','' '.

实施:

int main(void)
{
    int d1, d2;
    int sep1 = 0;
    int sep2 = 0;

    d1 = 48;
    while (d1 < 58)
    {
        d2 = d1 + 1;
        while (d2 < 58)
        {
            putchar(sep1);
            putchar(sep2);
            putchar(d1);
            putchar(d2);
            d2++;
            sep1 = ',';
            sep2 = ' ';
        }
        d1++;
    }

    putchar(10);
    return (0);
}