Petit probléme renvoi structure

cs_diazounet Messages postés 2 Date d'inscription lundi 8 février 2010 Statut Membre Dernière intervention 9 février 2010 - 8 févr. 2010 à 22:12
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 9 févr. 2010 à 09:42
Bonjour ,
doonc voila j'ai un petit probleme , dans un exo ya une question qui m'embete , la voici : Écrire une fonction de lecture qui prend en paramètre le nom d’un fichier PPM et retourne une structure IMG contenant l’image .
le probléme c'est que je ne sais pas comment faire pour retourner la structure image et je suis arriver a faire ca :
#include <stdio.h>
#include <stdlib.h>

struct IMG
{
int nbligne;
int nbcolonne;
int tab[300][300];
};

int main(int argc, char *argv[])
{
int nbligne;
int nbcolonne;
FILE* fichier = NULL;

fichier = fopen("img.ppm", "r");

if (fichier != NULL)
{
printf("Possibilite d'ecrire dans le fichier img.ppm\n");

fclose(fichier);
}
else
{
printf("Impossible d'ouvrir le fichier img_nav_home.ppm");
}
return 0;
}

donc quelqu'un aurait-il une solution a me proposer ?
Merci d'avance

3 réponses

fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 3
9 févr. 2010 à 08:16
salut,

le prototype de ta fonction peut etre :

IMG *chargerImage(char *nomFichier);

le code, en gros :
IMG *chargerImage(char *nomFichier)
{
IMG *pImage = malloc(sizeof(IMG));

// apres, fopen, fread dans pImage, et c'est bon !!

return pImage;
}
0
cs_diazounet Messages postés 2 Date d'inscription lundi 8 février 2010 Statut Membre Dernière intervention 9 février 2010
9 févr. 2010 à 08:58
peux - tu m'ecrire le code complet ( ce qu'il en devient apres ton indication ) pour que je comprenne bien comment ca marche ?
Merci d'avance
0
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 3
9 févr. 2010 à 09:42
code a l'arrache, donc non compilable, as toi de mettre au proche

main()
{
....
char fichier[256];
IMG *pImage(fichier);
..
free(pImage);
}

IMG *chargerImage(char *nomFichier)
{
  IMG *pImage = NULL;

  // apres, fopen, fread dans pImage, et c'est bon !!
  FILE *fp = fopen  // ca tu sais faire
  if (fp)
  {
    pImage = malloc(sizeof(IMG));
    int ret = fread(pImage, sizeof(IMG), 1, fp);
    // si ret = 1 c'est ok
    fclose(fp);
  }
  return pImage;
}


ok c'est peut etre dégueulasse pour certains qui préféreront un proto comme ceci :
int chargerImage(char *nomFichier, IMG *pImg); // donc l'allocation est faite dans l'appelant (main).
0