如何去掉C代码中的最后一个逗号?

mwkjh3gx  于 2023-05-28  发布在  其他
关注(0)|答案(3)|浏览(431)
for (i = 1; i < 100; ++i) {
        if ((vt[i] <= (mid - 65)) || (vt[i] >= (mid + 65))) {
            printf("%d, ", i);
            n = 1;
        }
    }
    if (n == 0) {
        printf("n/a");
    }

我希望输出是7,8,9,10而不是7,8,9,10,

jexiocij

jexiocij1#

我可能会这样做:

const char* fmt = "%d"; /* first item solo */

for (i = 1; i < 100; ++i) {
        if ((vt[i] <= (mid - 65)) || (vt[i] >= (mid + 65))) {
            printf(fmt, i);
            fmt = ", %d"; /* subsequent items comma separated */
            n = 1;
        }
    }
    if (n == 0) {
        printf("n/a");
    }
uttx8gqw

uttx8gqw2#

您可以使用变量n作为标志。举个例子

for (i = 1; i < 100; ++i) {
        if ((vt[i] <= (mid - 65)) || (vt[i] >= (mid + 65))) {

            if ( n ) printf( ", " );
            printf( "%d", i);
            n = 1;
        }
    }
    if (n == 0) {
        printf("n/a");
    }

P.S.检查循环的索引是否应该从0或1开始。

krcsximq

krcsximq3#

只要用简单的方法做就行了,用退格键转义序列i。e.\B

if (i == 100) {        // Just a logic, that doesn't matter
    printf("\b\b ");
}

回答你的逻辑:第一个\B,移动光标96,_第二个\b,将光标移动到96后面的逗号下,即96,printf()中给出的第三个(““)空格将用空格替换/删除逗号(,)。

相关问题