1

ファイルからこの行列 **a に値を読み込もうとしていますSegmentation faultが、scanf. 私のエラーを説明してもらえますか?ありがとうございました

int main(int argc, char**argv) {

    int**a;

    FILE * fp;

    int i, j, temp;
    int n = 8;
    fp = fopen("matrix.txt", "r");

    a = malloc(sizeof(int)*n);

    for (i = 0; i < n; i++)
        a[i] = malloc(sizeof(int)*n);

    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            fscanf(fp, "%d", a[i][j]);


    return 0;

}
4

2 に答える 2

5

にはアンパサンドが必要ですfscanf:

fscanf(fp, "%d", &a[i][j]);
                 ^

あなたを捕まえる可能性のある 2 番目の問題はsizeof、最初の で間違ったものを使用していることですmalloc。代わりsizeof(int *)sizeof(int). このような問題を回避するための簡単なルールは、次を使用することです。

a = malloc(n * sizeof *a);
于 2013-01-08T19:06:32.967 に答える
3

The first mistake is here: a = malloc(sizeof(int)*n);.

You have to use int* type instead: a = malloc(sizeof(int*)*n);

于 2013-01-08T19:06:01.870 に答える