我想制作一个程序,将一个整数存储在多维数组中,然后计算每行中的整数和,但是程序在第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/

10-10 18:40
查看更多