私は 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 を割り当てようとすると、セグメンテーション違反エラーが発生します。ポインターについての私からすると、うまくいくはずですが、ここで何かが欠けていて、大きな間違いを犯しているのではないかと心配しています。どんな助けでも大歓迎です。
編集:みんなありがとう!皆さんがおっしゃっているように、割り当てられていないメモリ、ヌルポインタにアクセスしようとしていました。今、私は別の問題を抱えていますが、それは別の投稿になります。ありがとう!