ここに私の問題があります:関数でmallocする2d charマトリックスがあります。その後、ファイルからマップを取得したいのですが、そこにセグメンテーション違反があり、その理由がわかりません...コードサンプルは次のとおりです。
// struct where I put the map and others informations from the
typedef struct problem_t
{
char *nom;
Coordonnees arrivee, depart;
int nb_ligne, nb_col;
char **
} Problem;
// Function wich malloc the map
int mallocCarte( char *** carte, int nbLigne, int nbCol )
{
*carte = malloc( nbLigne * sizeof( char* ) );
if ( *carte == NULL )
{
return false;
}
int i;
for ( i = 0; i < nbLigne ; ++i )
{
(*carte) [i] = malloc( nbCol * sizeof( char ) );
if ( (*carte) [i] == NULL )
{
return false;
}
}
return true;
} // mallocCarte ()
// Code sample, I've already got the others informations, now, I'd like to get the map
// On commence par reserver l'espace memoire reserve à la carte.
int res = mallocCarte( &problem->carte, problem->nb_ligne, problem->nb_col );
// Si l'allocation s'est mal passée, on renvoie un message
if ( res == false )
{
exc.num_Exc = MALLOC_ERROR;
exc.msg_Err = "Erreur lors de l'allocation mémoire de la carte";
return exc;
}
printf( "Recuperation de la carte 2 ...%d %d\n", problem->nb_ligne,
problem->nb_col );
int nbLi = 0;
int nbCol = 0;
while ( fgets( fromFile, 1, file ) != NULL && nbLi < problem->nb_ligne )
{
if ( fromFile [0] == '\n' )
{
nbCol = 0;
++nbLi;
continue;
}
if ( nbCol == problem->nb_col )
{
printf( "malformed input file!\n" );
exit( -1 );
}
( problem->carte ) [nbLi] [nbCol++] = fromFile [0];
}
何日も経ちましたが、本当にどうすればいいのかわかりません... 誰かが私を助けてくれたらとても嬉しいです!
ありがとうございます
(ここに情報を取得するソース ファイルがあります。最初に問題名、次に座標、最後にマップ サイズです。ファイルの最後にマップがあります https://dl.dropbox.com/u/56951442/ map.txt )