Passage structure en argument.

macbang Messages postés 14 Date d'inscription jeudi 25 juin 2009 Statut Membre Dernière intervention 3 juillet 2009 - 29 juin 2009 à 16:11
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 30 juin 2009 à 09:27
Bonjour,
J'ai un petit problème avec mon programme.
Le but est de découper une chaine de caractère, puis de l'analyser dans une autre fonction.

je déclare tout d'abord une structure :
typedef struct infos
{
char *nom;
int *ID;
}infos;


ensuite dans mon main j'initialise une structure de type infos :
infos eleves[50];


j'appelle ma première fonction qui va lire dans un fichier texte et découper pour placer dans la structure
k = decoupe (eleves);

j'appelle ma deuxieme fonction qui va compare la structure créée à une autre structure
comparaison(eleves,base);

voici la déclaration des deux fonctions :
int decoupe(infos eleves);    (return 1)
int comparaison(infos eleves, infos base);  (return 1)


Mon problème est le suivant :
La découpe s'effectue bien dans la première fonction. Toute les valeurs sont bien differentes.
Mais lorsque je printf dans mon main les variables de ma structure ,nom ou ID(avec une boucle for), je m'apercoi que toute les variables on la valeur du dernier remplissage. (si le nom du dernier élève était Dupont et son ID : 50 , alors tout les noms et ID de la structure observé dans le main seront DUPONT et 50 ).
J'aimerais pouvoir utiliser la structure correctement rempli par la première fonction, dans la deuxieme fonction.

D'ou vient le problème ?

Merci d'avance.

5 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
29 juin 2009 à 16:54
je crois qu'il faut que tu utilises un pointeur sur ton tableau de structure :
int decoupe(infos *eleves);
0
macbang Messages postés 14 Date d'inscription jeudi 25 juin 2009 Statut Membre Dernière intervention 3 juillet 2009
29 juin 2009 à 17:18
j'ai modifié mon programme de la manière suivants :

infos *eleves[50];

k = decoupe (&eleves[]);

int decoupe(infos *eleves);

pas d'erreurs lorsque je compile, mais le programme crash lors de l'appel de la fonction decoupe.
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
29 juin 2009 à 17:39
non faut faut juste changer le prototype de ta fonction :
infos eleves[50];

k = decoupe (&eleves);

int decoupe(infos *eleves);
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
29 juin 2009 à 21:04
Un tableau étant déjà en soi un pointeur:

infos eleves[50];
k = decoupe (eleves);
int decoupe(infos *eleves);

Suffit.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
30 juin 2009 à 09:27
Oups, en effet j'ai écrit des conneries avec les pointeurs !!!
0
Rejoignez-nous