0

malloc()2次元配列にメモリを割り当てるために使用するプログラムをCで作成しようとしています。次に、この配列にファイルからのデータ(4列、559行の数値)を入力する必要があります。

プログラムはコンパイルされますが、実行時に SIGSEGV エラーが発生します。

これはコードです:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){

    FILE *pf;
    pf = fopen("Union_sin.txt","r");

    int rows = 559;
    int columns = 4;
    int i =0;
    int j=0;
    float **matrix;
    matrix = (float **)malloc(rows*sizeof(float *));
    for(i=0;i<rows;i++){
        matrix[i] = (float *)malloc(columns*sizeof(float *));
    }

    for (i=0; i<rows; i++){
            for (j=0; j<columns; j++)
                fscanf(pf,"%f\t",&matrix[i][j]);
    }
    for(i=0;i<rows;i++){
        for(j=0;j<columns;j++){
            printf("%f\t", matrix[i][j]);}
        printf("\n");}
    for(i=0;i<rows;i++) free(matrix[i]);
    free(matrix);
    return 0;}

ご想像のとおり、私はあまり熟練していないので、親切で明確にしてください。

4

1 に答える 1