Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.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_Function_Matrix - Fatal编程技术网

在C中定义一个函数从用户处获取2D矩阵的元素

在C中定义一个函数从用户处获取2D矩阵的元素,c,function,matrix,C,Function,Matrix,我无法完成这段代码,请帮帮我!我必须修改矩阵,程序读取函数中的矩阵项 int main(int argc, char *argv[]) { int r1,c1; printf("Enter dimension of first matrix :"); scanf("%d %d",&r1,&c1); int m1[r1][c1]; GetArray(m1,r1,c1); system("PAUSE"); return 0; } v

我无法完成这段代码,请帮帮我!我必须修改矩阵,程序读取函数中的矩阵项

int main(int argc, char *argv[])
{ 
   int r1,c1;
   printf("Enter dimension of first matrix :");
   scanf("%d %d",&r1,&c1);

   int m1[r1][c1];
   GetArray(m1,r1,c1);


   system("PAUSE"); 
   return 0;
}
void GetArray(int arr[][],int _row,int _column)
{
    int i,j,num;
    printf("Enter number: ");
    for(i==0;i<_row;i++){
        for(j==0;j< _column;j++){
           scanf("%d",&num);
           arr[i][j]=num;}} //give error in this line
}
intmain(intargc,char*argv[])
{ 
int r1,c1;
printf(“输入第一个矩阵的维数:”);
scanf(“%d%d”、&r1和&c1);
int m1[r1][c1];
GetArray(m1,r1,c1);
系统(“暂停”);
返回0;
}
void GetArray(int arr[]],int行,int列)
{
int i,j,num;
printf(“输入编号:”);

对于(i==0;i在C编程中,
==
用于比较,
=
用于赋值操作。您肯定希望在
中为
循环的
i
赋值。在您的情况下,您没有初始化循环变量(当您在函数开头声明它们时)由于它们在未初始化时会得到垃圾值,因此您试图超出在
for
循环中使用的数组的边界,从而导致分段错误。

int main(int argc,char*argv[])
int main(int argc, char *argv[])
{ 
    int r1,c1;
    printf("Enter dimension of first matrix :");
    scanf("%d %d",&r1,&c1);
    int **m1;
    for(int i = 0; i<r1 ;++i) // use c99 !
        m1[i] = malloc(c1* sizeof(int));
    GetArray(m1,r1,c1);
    system("PAUSE");
    for(int i = 0; i<r1 ;++i)
        free(m1[i]);
    return 0;
}
void GetArray(int ** m1,int _row,int _column)
{
    int i,j,num;
    printf("Enter number: ");
    for(i=0;i<_row;i++){
        for(j=0;j< _column;j++){
           scanf("%d",&num);
           m1[i][j]=num;}} //give error in this line
}
{ int r1,c1; printf(“输入第一个矩阵的维数:”); scanf(“%d%d”、&r1和&c1); 整数**m1;
对于(int i=0;i您确实意识到,
=
检查相等性,
=
是赋值,这就是您想要的。
int m1[r1][c1]
你看,你不能用从键盘读取的
r1
c1
来实现这一点。你需要动态地分配
m1
。或者给m1一个比从键盘输入的值大的固定大小,并声明r1和c1静态常量。谢谢回答==是我的疏忽。主要问题是我必须初始化函数中数组的第二维,如void GetArray(int arr[][3],int _row,int _column)噢,我忘了提到它。是的,你还必须指定第二维。如果我能帮忙,我很高兴:)