我试图打印格式化的int
数组
#include <stdio.h>
#define SIZE 3
int arr[SIZE] = {1, 2, 3};
int main(void)
{
printf("{");
for (int i =0; i < SIZE; i++ )
{
printf("%d, ", arr[i]);
}
printf("}");
printf("\n");
}
但是发现很难
$ ./a.out
{1, 2, 3, }
附加逗号。
是否可以轻松地完成这样的任务?
答案 0 :(得分:4)
鉴于C中不允许使用零长度数组(因此arr[0]
始终存在),并且您已经有了用于括号的显式代码,这种解决方案在我看来是合理的:
int main(void)
{
printf("{%d", arr[0]);
for (size_t/*better type for array index*/ i = 1; i < SIZE; ++i)
{
printf(", %d", arr[i]);
}
printf("}\n");
}
答案 1 :(得分:2)
以下方法在if
循环中完全没有任何for
条件的情况下执行。
想法只是循环到i < SIZE-1
并在循环外打印最后一位。
int i=0 ;
printf("{");
for (i =0; i < SIZE-1; i++ )
{
printf("%d, ", arr[i]);
}
printf("%d}", arr[i]);
printf("\n");
答案 2 :(得分:0)
尝试一下:
#include <stdio.h>
#define SIZE 3
int arr[SIZE] = {1, 2, 3};
int main(void)
{
printf("{");
for (int i =0; i < (SIZE-1); i++ )
{
printf("%d, ", arr[i]);
}
printf("%d}\n", arr[SIZE-1]);
}
答案 3 :(得分:-1)
您也可以尝试以下方法:
#include <stdio.h>
#define SIZE 3
int arr[SIZE] = {1, 2, 3};
int main(void)
{
printf("{");
for (int i =0; i < SIZE; i++ )
{
printf("%d", arr[i]);
if(i < (SIZE - 1)){
printf(", ");
}
}
printf("}");
printf("\n");
}
答案 4 :(得分:-1)
代码需要将数组的第一个或最后一个元素视为特殊情况。为了将第一个元素视为特殊字符,代码应在每个数字之前打印一个逗号和空格,但仅打印数字时,第一个元素除外。
这可以通过三元运算符完成。考虑三元表达式:
i ? ", " : ""
当i
不为零时,表达式的计算结果为一个包含逗号和空格的字符串。但是,当i
为零时,结果为空字符串。因此,i == 0
是特例。
代码如下:
int main(void)
{
printf("{");
for (int i = 0; i < SIZE; i++)
{
printf("%s%d", i ? ", " : "", arr[i]);
}
printf("}\n");
}