我想创建一个程序,在多维数组中存储整数,然后计算每行中的整数之和,但程序在第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;
}
答案 0 :(得分:1)
scanf
期望变量的地址。
尝试以下代码..
scanf(" %d",(Table+i*ROW+j)); //notice removed *