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
| /* La fonction créé un tableau dynamique niveau de gris, et le remplit */
/* La fonction renvoie l'adresse du tableau dynamique */
int * traitement(int * rouge, int * vert, int * bleu, size_t nbr)
{
...
}
/* La fonction lit le fichier, créé 3 tableaux dynamiques (un par canal : RGB) et les remplit */
/* La fonction renvoie 1 en cas de réussite, 0 sinon */
/* Si la fonction echoue alors qu'elle a alloué quelque chose, elle doit "free" elle-même, et les pointeurs pointés par les 3 premiers pointeurs (dans les arguments) doivent être mis (ou rester) à NULL */
int lecture_fichier_remplissage_RGB( char const * const nom_fichier , int ** pixel_rouge , int ** pixel_vert , int ** pixel_bleu , size_t * nbr_pixels)
{
...
}
int main(void)
{
int * pixel_rouge = NULL;
int * pixel_vert = NULL;
int * pixel_bleu = NULL;
int * pixel_gris = NULL;
size_t nbr_pixels = 0;
char nom_fichier[]=".............";
if (lecture_fichier_remplissage_RGB(nom_fichier , &pixel_rouge , &pixel_vert , &pixel_bleu , &nbr_pixels))
{
pixel_gris = traitement(pixel_rouge , pixel_vert , pixel_bleu , nbr_pixels);
if ( pixel_gris != NULL )
{
... en cas d' autres traitement à faire / affichage ...
free(pixel_gris);
pixel_gris = NULL;
}
free(pixel_rouge);
free(pixel_vert);
free(pixel_bleu);
pixel_rouge = pixel_vert = pixel_bleu = NULL;
}
/* ici, tous les tableaux ont été desalloués... */
...
return .... ;
} |
Partager