Probleme avec fscanf et pointeurs...en C

Signaler
Messages postés
3
Date d'inscription
samedi 6 mars 2010
Statut
Membre
Dernière intervention
19 avril 2010
-
Messages postés
3
Date d'inscription
samedi 6 mars 2010
Statut
Membre
Dernière intervention
19 avril 2010
-
Mon problème est le suivant:

J'essaye de faire un programme qui est un peu compliqué...Mais la petite partie qui ne fonctione pas est suposément simple. Le warning que j'ai est le suivante : format argument is not a pointer (arg 3). Je met une partie du code pour que vous voyez...


/*Alors j'ai une struct qui est definie dans un fichier .h
  En fait c'est une typedef struct*/

typedef struct 
{
 // Champs de l'en-tête d'un fichier image
   char ch[TAILLE_CHAINE];		// 1ère chaîne du fichier image
   int nbColonnes;			// nombre de colonnes de l'image du
                                        // fichier image
   int nbLignes;			// nombre de lignes de 
                                        // l'image du fichier image
   int max;				// valeur maximale des intensités 
                                        // dans les trois canaux (RGB)   
} EnTete;


typedef struct 
{
   // Une image 	 
   EnTete lEnTete;				// l'en-tête du fichier 
   Pixel tabPixels[MAX_PIXELS];	// les pixels 
} Image;

// Le code qui précéde se trouve dans un fichier .h

// Le code qui suit est dans un fichier .c dans lequel j'appele une 
// une fonction qui utilise le type Image sur un pointeur.

void lectureImage(char * entree,  Image * imageOri, int * err)
{
//...

// les trois prochaines lignes donne l'erreur suivante
//format argument is not a pointer (arg 3)

fscanf(f,"%i", imageOri->lEnTete.nbColonnes); 
fscanf(f,"%i", imageOri->lEnTete.nbLignes);
fscanf(f,"%i", imageOri->lEnTete.max);



Avant les trois lignes j'ai un autre fscanf pour imageOri->lEnTete.ch. Elle ne donne aucun Warning. Ou pensez-vous qu'est le problème?
Le imageOri est defini comme un pointeur, alors je ne comprend pas pourquoi le warning. De plus avec l'autre partie de la struct le lEnTere.ch il n'y a aucun problème?!?!?!

4 réponses

Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
salut,

en effet, étrange !!
mis à part le warning, est ce que ton fichier est bien rempli ?

Sinon, personellement, pour les traitements sur les fichiers, je préfère utiliser fread/fwrite.
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
Peut être comme ceci:
fscanf(f,"%i", &imageOri->lEnTete.nbColonnes);
fscanf(f,"%i", &imageOri->lEnTete.nbLignes);
fscanf(f,"%i", &imageOri->lEnTete.max);

pour imageOri->lEnTete.ch. Elle ne donne aucun Warning.

Normal, ch est un tableau, donc un pointeur, ce qui n'était pas le cas des trois précédent ;)

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
ah oui !!
Voilà pourquoi je n'utilise pas fscanf.
Messages postés
3
Date d'inscription
samedi 6 mars 2010
Statut
Membre
Dernière intervention
19 avril 2010

Merci beaucoup pour vos rèponses. Finalement cptPingu avait raison il falait mettre &. La je comprend. Merci encore une fois.