Le fameux erreur "undefined reference to 'fonction' . "

Résolu/Fermé
informatique_c Messages postés 30 Date d'inscription mardi 22 juillet 2014 Statut Membre Dernière intervention 17 mars 2016 - Modifié par pijaku le 24/07/2014 à 11:25
informatique_c Messages postés 30 Date d'inscription mardi 22 juillet 2014 Statut Membre Dernière intervention 17 mars 2016 - 25 mars 2015 à 15:49
salut !
voila mon problème , j'ai eu l'erreur ' undefined reference to ' malgré que j'ait cernais tout les probs , dans mon projet j'ai deux fichiers source (main.c et exo_joueurs.c ) et j'ai aussi le fichier header (exo_joueurs.h),bref mon code lis les informations des joueurs c tt
donc voila le code :

dans le fichier main.c il y'a :
-----------------------------

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "exo_joueurs.h"
typedef struct joueur joueur;
struct joueur{
char nom[50];
char prenom[50];
int age;
int sexe;
};

main(){
char S[20];
joueur J[20] = {"","",0,0};
int i;
puts("Bien venu a notre programme qui colécte les informations des joueurs");
rempl_de_tab(&J);
puts("");
puts("");
}

----------------------------------
dans le fichier exo_joueurs.c il y'a :
------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "exo_joueurs.h"
 
void rempl_de_tab(int *i,joueur *J){
for(*i=0;*i<=19;*i++){
 printf("joueur %d faitez entrez vautre : \n nom \n prenom \n age \n sexe : 1-si homme 2- si famme \n",i);
 scanf("%s%s%d%d",J[*i].nom,J[*i].prenom,J[*i].age,J[*i].sexe);
}
}

------------------------------------
dans le fichier header exo_joueurs.h y'a :
------------------------------------
#ifndef DEF_EXO_JOUEURS
// Si la constante n'a pas été définie le fichier n'a jamais été inclus
#define DEF_EXO_JOUEURS
// On définit la constante pour que la prochaine fois le fichier ne soit plus inclus

/* Contenu de votre fichier .h (autres include, prototypes, define...) */
 void rempl_de_tab();
 void affich_de_tab();

#endif

----------------------------------
voila une photo :

2 réponses

informatique_c Messages postés 30 Date d'inscription mardi 22 juillet 2014 Statut Membre Dernière intervention 17 mars 2016 1
22 juil. 2014 à 09:31
dsl pr l'image
0
IntGrapher Messages postés 9 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 22 juillet 2014
22 juil. 2014 à 09:48
Par curiosité, t sous quel OS ?
0
IntGrapher Messages postés 9 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 22 juillet 2014
22 juil. 2014 à 09:53
Et dans la fonction remplir_je sais pas quoi, dans le premier for(), tu fais *i = 0;
Tu utilise un pointeur sur i alors que i est de ja un pointeur(sa fait un double par).
Sinon essayer de recréer ton projet ...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 813
22 juil. 2014 à 10:17
Tu utilise un pointeur sur i alors que i est de ja un pointeur(sa fait un double par).
Je ne comprends pas ce que tu veux dire IntGrapher...
Il fait *i=0... C'est normal puisque i est un pointeur...
0
IntGrapher Messages postés 9 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 22 juillet 2014 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
22 juil. 2014 à 20:59
C ce que je me disait quand j'ai commencé à utiliser les pointeur mais i est de type Int*, et un pointeur est une variable qui stocke une adresse mémoire donc quand il fait *i, il manipule l'adresse d'une adresse(adresse d'un pointeur ou double pointeur)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 813
22 juil. 2014 à 21:10
Pas du tout !
i est de type int*. Donc i (et non *i) représente une adresse dans la pile qu'on accède via *i.
Dis autrement *i est de type int (ce n'est clairement pas un double pointeur). Donc il est normal qu'il fasse *i=0...
0