gpt4 book ai didi

c - 如何仅使用一个函数扫描任何二维数组?

转载 作者:行者123 更新时间:2023-11-30 18:12:43 25 4
gpt4 key购买 nike

我一直在寻找如何到处执行此操作,但找不到任何东西,我想我可能问了错误的问题,但事实是,我一直在尝试仅使用一个函数来读取或打印您在 main 上定义的任何二维数组,然后将其作为函数上的单个参数传递...这是我的代码:

int main() {

int array2d[2][5] = {{0}};

load_array(array2d,2);

return(0);

}

void load_array(int a[][5],int row) {

int i = 0,j = 0,column;
column= sizeof(*a) / sizeof(int);

do {
j=0;
while (j < column && scanf("%d",&a[i][j++]) == 1);
} while (++i < row);

}

我已经设法避免通过在函数内部计算来传递列数,所以问题实际上是我能做什么,这并不是很复杂,以避免必须传递行数,在此为 2情况下,以便我可以随时使用此函数扫描我在其他项目上创建的二维数组?

感谢您的帮助!!

最佳答案

如果您有权访问支持 C99 或 C11 的编译器,您应该能够使用如下所示的代码来处理 int 的任何二维数组:

#include <stdio.h>

extern void load_array(int n, int m, int a[n][m]);

int main(void)
{
int array2d_2_5[2][5] = { { 25 } };
int array2d_9_4[9][4] = { { 94 } };

load_array(2, 5, array2d_2_5);
load_array(9, 4, array2d_9_4);

return(0);
}

void load_array(int n, int m, int a[n][m])
{
int i = 0, j = 0;
column= sizeof(*a) / sizeof(int);

do
{
j = 0;
while (j < m && scanf("%d", &a[i][j++]) == 1)
;
} while (++i < n);
}

我不太喜欢 do … while循环,但我认为它可能有效。我很想使用 load_array() 的替代定义,更多类似这样的:

bool load_array(int n, int m, int a[n][m])
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (scanf("%d", &a[i][j++]) != 1)
return false;
}
}
return true;
}

这将使用 <stdbool.h> header 和其他 C99 功能,例如在循环控制中声明变量。我会更改声明并适当调用。至少这样,您可以判断加载数据时是否出现问题,而不必祈祷。

问题说仅使用一个函数来读取或打印任何二维数组;处理任何类型的任何二维数组都非常非常困难。

关于c - 如何仅使用一个函数扫描任何二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32061363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com