1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
char **piece_fichier (int Nb, int Taille, int *NbReel)
{
FILE *ptr_piece=NULL;
char **piece = NULL ;
int i , j , num_piece = 0;
char *ligne_piece=NULL;
*NbReel = 0 ;
ligne_piece = calloc ( (Taille+1), 1 );
if ( ligne_piece == NULL )
return NULL ;
piece = calloc ( Nb, sizeof(char *) );
if ( piece == NULL )
{
free(ligne_piece);
return piece ;
}
for ( i = 0 ; i < Nb ; i++ )
{
piece[i] = calloc ( (Taille+1), 1);
if ( piece[i] == NULL )
{
if ( i != 0 )
for ( j = (i-1) ; j >= 0 ; j-- )
free(piece[j]);
free(piece);
free(ligne_piece);
piece = NULL ;
return piece ;
}
}
ptr_piece = fopen ("piece.txt", "r");
if ( ptr_piece != NULL )
{
if ( fgets (ligne_piece, Taille, ptr_piece) != NULL )
{
for (i=0 ; i<Taille ; i++)
{
if (ligne_piece [i] == ZERO)
{
piece [num_piece] [i] = ESPACE;
}
else if (ligne_piece [i] == UN)
{
piece [num_piece] [i] = X_MAJ;
}
num_piece ++;
}
}
}
free(ligne_piece);
*NbReel = num_piece ;
return piece;
}
int main ()
{
char **piece_retour=NULL;
int j, NbReel;
if ( (piece_retour = piece_fichier (NB_PIECE_MAX, TAILLE_PIECE, &NbReel)) != NULL )
{
for (j = 0 ; j < NbReel ; j++)
{
printf ("%s\n" , piece_retour [j]);
}
/* liberation */
for (j = (NB_PIECE_MAX-1) ; j >= 0 ; j--)
free(piece_retour[j]);
free(piece_retour);
}
return 0;
} |