我想知道如何打印数组的内容。
# include<stdio.h>
int main() {
int arr[2][2];
arr[0][0] = 1;
arr[0][1] = 2;
arr[1][0] = 3;
arr[1][1] = 4;
printf("%d", arr[1]);
printf("%d", arr[1][0]);
return 0;
}
上述代码的输出为无符号int。
https://i.stack.imgur.com/A5daj.png <--这就是输出的样子。
请帮我得到{ 3 ,4}和3的输出。
发布于 2022-07-31 17:15:05
除非是字符串,而且使用的是%s
转换说明符,否则不能在单个转换中打印整个数组(或2D数组的一行)的内容。要获得所需的输出,必须分别打印每个行元素:
printf( "{%d, %d}\n", arr[1][0], arr[1][1] );
在更一般的情况下,每行有两个以上的元素,您可以使用一个循环(最好是在它自己的函数中):
void dispArr( int *arr, size_t num_elements, FILE *stream)
{
fputc( '{', stream);
for ( size_t i = 0; i < num_elements; i++ )
fprintf( stream, "%d%s", arr[i],
num_elements - i > 1 ? ", " : "}\n" );
}
fprintf
语句的最后一点基本上是“除了输出}\n
的最后一个元素之外,在每个元素之后输出,
”。在您的代码中,您会将其称为
dispArr( arr[1], 2, stdout );
发布于 2022-07-31 16:15:44
第一个printf()语句引用一个数组(arr1),因此它打印出数组的地址。
第二个printf()语句打印一个数组元素,但是由于在第一个printf()中没有包含一个端点行("\n"),所以它只会被添加到第一个printf()的末尾。
https://stackoverflow.com/questions/73184885
复制相似问题