二维数组(int)意外地在数据输入时崩溃了?

时间:2014-01-17 17:53:28

标签: c pointers multidimensional-array malloc

我想创建一个程序,在多维数组中存储整数,然后计算每行中的整数之和,但程序在第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;     
}

1 个答案:

答案 0 :(得分:1)

scanf期望变量的地址。

尝试以下代码..

 scanf(" %d",(Table+i*ROW+j)); //notice removed *