我想制作一个程序,将一个整数存储在多维数组中,然后计算每行中的整数和,但是程序在第3个输入时意外崩溃。
程序编译无警告,错误
我知道new
是C ++中的关键字,但是此程序仅适用于C
#include <stdio.h>
#include <stdlib.h>
int* linesum(int *ar,int X,int Y);
main()
{
int n,i,j,*temp,ROW,COL;
printf("Input size of row ");
scanf(" %d",&ROW);
printf("Input size of column ");
scanf(" %d",&COL);
int *Table=(int*)malloc(ROW*COL*sizeof(int));
for(i=0;i<ROW;i++)
for(j=0;j<COL;j++){
printf("Input integer of %d row %d column ",i+1,j+1);
scanf(" %d",*(Table+i*ROW+j));
}
temp=linesum(Table,ROW,COL);
free(Table);
for(i=0;i<ROW;i++)
printf("Total sum of line %d is %d",i,*(temp+i));
free(temp);
return 0;
}
int* linesum(int *ar,int X,int Y)
{
int i,j,lsum=0;
int *new=malloc(X*sizeof(int));
for(i=0;i<X;i++){
for(j=0;j<Y;j++)
lsum+=*(ar+i*X+j);
*(new+i)=lsum;
lsum=0;
}
return new;
}
最佳答案
scanf
期望变量的地址。
请尝试下面的代码。
scanf(" %d",(Table+i*ROW+j)); //notice removed *
关于c - 二维数组(int)在数据输入时意外崩溃?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21192604/