在一行中打印十个项目......并处理逗号

时间:2015-01-28 02:47:54

标签: c

我正在编写一个函数,一次从数组中打印10个项目,之后用逗号分隔,除了行中的最后一项。

我可以通过使用if语句将其转到10处没有逗号的新行,但是当最后一行中少于10个项目时,它仍会打印逗号。

任何人都可以提出解决这个问题的暗示吗?

当前无效代码:

 if (count < size-1){
      printf("%d%s", sequence[i],", ");
      count++;
 }
 else if (count == size-1){
      printf("%d%s", sequence[i],"\n");
      count = 1;

示例: 需要这个:

a, b, c, d, g, j, o, p, q, q, j

k, j, f, a, q

目前得到这个:

a, b, c, d, g, j, o, p, q, q, j

k, j, f, a, q,   <--- this last comma should not be here

2 个答案:

答案 0 :(得分:2)

您当前的逻辑是“如果索引小于9,则打印逗号”。如果索引小于9,索引不是数组中的最后一个元素,那么你的逻辑“打印逗号”

工作代码:

int i;
for (i = 0; i < numberOfItemsInSequence && i < numberOfItemsToPrint; i++) {
    printf("%d", i);
    if (i < numberOfItemsInSequence - 1 && i < numberOfItemsToPrint - 1) {
        printf(",");
    } else {
        printf("\n");
    }
}

答案 1 :(得分:1)

要修复的示例

#include <stdio.h>

int main(void){
    int sequence[] = {
        'a','b','c','d','g','j','o','p','q','q',
        'j','k','j','f','a','q'
    };
    int wrap_size = 10;
    int i, count=0;
    for(i=0; i< sizeof(sequence)/sizeof(*sequence); ++i){
        if(count++)
            printf(", ");
        printf("%c", sequence[i]);
        if(count == wrap_size){
            putchar('\n');
            count = 0;
        }
    }
    if(count)
        putchar('\n');
    return 0;
}