2

私は C の初心者で、この 1 つの関数で多くの問題を抱えています。次のように宣言された構造体があります。

struct nivel {
    size_t filas;
    size_t columnas;
    int **mapa;
};

これは、サイズ情報を含む単なる 2 次元配列です。今、私はテキストファイルを読んで「nivel」を作る関数を持っています。それは次のように定義されています:

void nuevo_nivel_desde_archivo(struct nivel * nuevo_nivel, char *nombre_archivo ){
 nuevo_nivel->filas = 0;
 nuevo_nivel->columnas = 0;
 ...

問題が存在する場所なので、この部分だけを投稿します。私はいつも、構造体へのポインターを受け取り、「それを埋める」関数を作成できると考えていたので、次のように関数を呼び出します。

struct nivel *nuevo_nivel;
nuevo_nivel_desde_archivo(nuevo_nivel,nombre_archivo);

Nombre_archivo は、テキスト ファイルの名前を保持するだけです。構造体のいずれかのフィールドに cero を割り当てようとすると、セグメンテーション違反エラーが発生します。ポインターについての私からすると、うまくいくはずですが、ここで何かが欠けていて、大きな間違いを犯しているのではないかと心配しています。どんな助けでも大歓迎です。

編集:みんなありがとう!皆さんがおっしゃっているように、割り当てられていないメモリ、ヌルポインタにアクセスしようとしていました。今、私は別の問題を抱えていますが、それは別の投稿になります。ありがとう!

4

4 に答える 4