Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Arrays 如何从C中的数组中删除数组_Arrays_C_Double_Line_Remove - Fatal编程技术网

Arrays 如何从C中的数组中删除数组

Arrays 如何从C中的数组中删除数组,arrays,c,double,line,remove,Arrays,C,Double,Line,Remove,我使用2D int数组在游戏板上显示它的值。 问题是,当一行仅由相同值的数字组成时,该行必须消失 我目前正在使用负值跳过数字显示。 如何从另一个数组中删除包含类似值的数组 这是: srand(time(NULL)); int **arr; for(i = 0; i < 9; i++) { for(j = 0; j < 9; j++) { arr[i][j] = rand() % 10; // Number between 0 and 9 } } 我不需要任何条

我使用2D int数组在游戏板上显示它的值。 问题是,当一行仅由相同值的数字组成时,该行必须消失

我目前正在使用负值跳过数字显示。 如何从另一个数组中删除包含类似值的数组

这是:

srand(time(NULL));
int **arr;

for(i = 0; i < 9; i++) {
  for(j = 0; j < 9; j++) {
    arr[i][j] = rand() % 10;   // Number between 0 and 9
  }
}
我不需要任何条件结构,只需要删除行的方法。 提前感谢:


GUEROUI Mourad

首先,因为您使用指针定义了二维数组,这意味着您需要动态分配它。我从你的问题推断你是C语言的初学者,所以我不知道你是否学过动态内存分配

如果尚未学习动态内存分配,请将int**arr更改为int arr[9][9]。我之所以使用9,是因为你用它来表示I和j,它们是你的行和列

如果您想通过动态内存分配来实现,请使用malloc函数。即使您将二维数组视为数组的数组,但在一天结束时,数组的标识符是指向数组中第一个元素的指针。因此,不要将二维数组视为数组数组,而应将其视为指针数组。至少,当您动态分配数组时,您必须这样考虑它们。代码如下所示

int **arr = (int**)malloc(sizeof(int*) * 9);   // allocate an array of 9 int pointers
    for (unsigned i = 0; i < 9; i++) {         // at each pointer, allocate an arrray
        arr[i] = (int*)malloc(sizeof(int) * 9);
    }
完成后,可以使用已经编写的for循环用随机值填充数组


关于你原来的问题,我还是不太明白你在问什么。请澄清。

我建议一种更简单的方法:与其分配和释放内存,不如使用静态2D数组,并创建一个函数来检查一行是否仅由相同的重复编号组成。 例如,如果要打印行,此函数返回1,否则返回0:

int isToPrint( int *line, int len )
{
    for(int i = 1; i < len; i++) {
        
        if( line[i] != line[i-1] ) return 1;
    }
    
    return 0;
}

您的代码几乎肯定会出错。现在还不清楚你想做什么。移除阵列是什么意思?C语言中没有这样的术语,真的吗?这就是我在学校学到的。这是为什么?你可以在我提供的链接中阅读所有你需要了解的内容。你也用错了sizeof。谢谢你的回复Ben!我还没有编写用于动态分配的malloc和free函数,但不用担心,我知道如何处理它们:我的问题是,如果您愿意,如何从[9][9]数组中获取[9][8]。我必须用旧的值从头开始重新动态分配内存吗?你有没有在学校读过《让我们用C》这本书?
if( isToPrint(array[i], len) ) {...print the line...}