基于结束条件的 C 格式输出

Maj*_*ajd 2 c iteration loops stdout output

我正在迭代一些计数器以C将结果打印在像这样分隔的单行上012, 013, 014, etc...

我的代码根据某些条件结束,并且正在由机器人纠正。

我怎样才能停止打印, 代码的最后一个值之后的内容。这个想法是得到一个只有唯一数字的 3 位数字,并且按升序排列,以789;结尾。

我的功能如下:

void my_print_comb(void){
   for(int i = 47; i++ < 57 ; ){
      for(int j = 48; j++ < 57 ; ){
         for(int k = 49; k++ < 57 ; ){
             if( i != j && i != k && j != k){
                while( i < j && j < k){
                char a = i, b = j, c = k;
                my_putchar(a);
                my_putchar(b);
                my_putchar(c);
                my_putchar(',');
                my_putchar(' ');
                break;
                }
             }
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

use*_*799 5

打印不带逗号的元素之一。要么打印第一个元素,然后迭代数组的其余部分,并打印, 前面带有 a 的每个元素;或者打印除最后一个元素之外的所有元素,并, 在每个元素后添加一个,然后打印最后一个元素。我更喜欢第一种方法。

由于您没有显示任何代码,我只是举一个例子。

void pretty_print_ints(const int *array, size_t count)
{
    // Nothing to do.
    if (count == 0 || array == NULL) return;

    // Print the first element, without a `,` after it.
    printf("%d", array[0]);

    // If there are more elements in the list, print them all, but add a `, ` separator.
    for (size_t i = 1; i < count; i++) printf(", %d", array[i]);

    // Add a new line at the end.
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

如果我们不知道必须打印多少个元素,它也可以工作。例如,count我们可以在遇到等于 的元素时停止,而不是在打印元素时停止0,我们唯一需要更改的是停止条件。如果我们采取相反的方式(打印count - 1元素,printf("%d, ", array[i]);我们将无法处理这种情况)。