Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中2D数组的初始化不正确_C_Arrays_Multidimensional Array - Fatal编程技术网

C中2D数组的初始化不正确

C中2D数组的初始化不正确,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,我正在尝试为赋值构造一个2D数组。我已使用嵌套for循环使用scanf()构造2D数组: int宽度; 内部高度; 扫描频率(“%d%d”、&宽度和高度); 整数数组[宽度][高度]; 对于(int i=0;i您的数组声明 int array[width][height]; 错误。外部循环从0到高度-1,但数组[i]只能执行 从0到width-1。这同样适用于内部循环。您交换了width 和高度在数组的声明中,它应该是 int array[height][width]; 6 3 1 3 5

我正在尝试为赋值构造一个2D数组。我已使用嵌套for循环使用scanf()构造2D数组:

int宽度;
内部高度;
扫描频率(“%d%d”、&宽度和高度);
整数数组[宽度][高度];

对于(int i=0;i您的
数组声明

int array[width][height];
错误。外部循环从0到
高度-1
,但
数组[i]
只能执行
从0到
width-1
。这同样适用于内部循环。您交换了
width
高度
在数组的声明中,它应该是

int array[height][width];
6 3
1 3 5 7 9 1
2 4 6 8 0 2
3 4 2 0 1 3
还要注意的是,对于矩阵

1 3 5 7 9 1
2 4 6 8 0 2
3 4 2 0 1 3
宽度为6,高度为3,因此应选择正确的输入

int array[height][width];
6 3
1 3 5 7 9 1
2 4 6 8 0 2
3 4 2 0 1 3
我编译并运行了以下代码:

#include <stdio.h>

int main(void)
{
    int width;
  int height;

  scanf("%d %d",&width,&height);

  int array[height][width];

  for (int i=0;i<height;i++){
    for (int j=0;j<width;j++){
      scanf("%d",&array[i][j]);
    }
  }

  printf("----------------\n");

  for (int i=0;i<height;i++){
    for (int j=0;j<width;j++){
      printf("%d ", array[i][j]);
    }
    printf("\n");
  }


}

如您所见,现在它读取正确。请参见

您在循环中交换了
width
height
,或者执行
int array[height][width]
或者您交换条件
以获得快速回复。我交换了循环,但仍然有问题。输出现在是:135791 579124,所以仍然不正确,只是第2行的前4个数字现在不正确。检查我的答案,交换数组声明修复了问题。请参阅@callum202我怀疑有问题使用示例输入或显示代码。你能发布吗?注意,你说输入的大小是
6 2
,但这会给你两行而不是三行。同样,你似乎给了它很多数字,所以可能是输入错误。@Steve谢谢Steve,Pablo正确地识别了问题。啊,太好了,这解决了问题。是的,我尝试了你的建议以前在数组初始化时忘记切换[height]和[width],现在可以了,非常感谢您的帮助!