Problèmes de pointeur pour un tableau de structure

Résolu
cs_fantaorange Messages postés 4 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 27 février 2009 - 16 févr. 2009 à 11:44
cs_fantaorange Messages postés 4 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 27 février 2009 - 16 févr. 2009 à 12:56
Bonjour à tous,

Me voilà débutant en C, et je galère un peu avec les pointeurs pour un tableau de structure...

Je me suis fixé un petit exercice qui consiste a définir une structure contenant le prenom , le nom et l'age d'un joueur, mais cette structure sera utilisée pour plusieurs joueurs...pfff 
Ensuite un fonction qui demande de rentrer au clavier le prenom, le nom et l'age pour chaques joueurs, puis une autre fonction qui les affiche dans la console...

Je ne vous dirai pas pendant combien d'heures j'ai retourné mon programme dans tout les sens afin qu'il fonctionne, mais sans succès... Et donc se serai vraiment gentil à quelqu'un de vous de m'aider à comprendre mes erreurs.

Voici le code mon programme que je pense être le plus juste en fonction de ce que j'ai compris: (mais il ne fonctionne pas)

#define NBR_JOUEUR 4


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>




typedef struct CoordonneesJoueurStruct CoordonneesJoueurStruct;


void initCoordonnees(CoordonneesJoueurStruct *CoordJoueurs);
void afficheJoueur(CoordonneesJoueurStruct *CoordJoueur)


struct CoordonneesJoueurStruct
{
    char prenom[100];
    char nom[100];
    char age;
};


void initCoordonnees(CoordonneesJoueurStruct *CoordJoueurs)
{
    long numJoueur = 0;
    for (numJoueur=0;numJoueur!=NBR_JOUEUR;numJoueur++)
    {
        printf("Prenom du joueur %ld\n",numJoueur);
        scanf("%s",(*CoordJoueurs[numJoueur]).prenom);
        printf("Nom du joueur %ld\n",numJoueur);
        scanf("%s",(*CoordJoueurs[numJoueur]).nom);
        printf("Age du joueur %ld\n",numJoueur);
        scanf("%ld",(*CoordJoueurs[numJoueur]).age);
        printf("ok\n");
    }
}


void afficheJoueur(CoordonneesJoueurStruct *CoordJoueur)
{
    long numJoueur = 0;
    for (numJoueur=0;numJoueur<NBR_JOUEUR;numJoueur++)
    {
        printf("Coordonnees du Joueur %ld\n",numJoueur);
        printf("%s %s %ld\n",(*CoordJoueur[numJoueur]).prenom,
            ( *CoordJoueur[numJoueur]).nom,(*CoordJoueur[numJoueur]).age);
    }
}


int main(int argc, char *argv[])
{
    CoordonneesJoueurStruct Coordonnees[NBR_JOUEUR] = {0};
    CoordonneesJoueurStruct *pointeur = &Coordonnees[NBR_JOUEUR]; 
    initCoordonnees(pointeur);
    afficheJoueur(pointeur);
    system ("PAUSE");
    return 0;
}




Merci d'avance pour vos réponses et salutations à tous










 

3 réponses

cs_fantaorange Messages postés 4 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 27 février 2009
16 févr. 2009 à 11:51
Désolé il manque un point virgule au prototype:
void afficheJoueur(CoordonneesJoueurStruct *CoordJoueur);

Mais c'est un petit détail important qui ne suffit pas au bon fonctionnement du programme
3
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
16 févr. 2009 à 11:58
Salut
En effet, il y a plusieurs erreurs dans ton programme:
Quand tu déclares un tableau, tu déclares un pointeur donc cela devient:

#define NBR_JOUEUR 4

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

typedef struct _CoordonneesJoueurStruct
{
    char prenom[100];
    char nom[100];
    int age;
}CoordonneesJoueurStruct;

void initCoordonnees(CoordonneesJoueurStruct *CoordJoueurs)
{
    long numJoueur = 0;
    for (numJoueur=0;numJoueur!=NBR_JOUEUR;numJoueur++)
    {
        printf("Prenom du joueur %ld\n",numJoueur);
        scanf("%s",&(CoordJoueurs[numJoueur]).prenom);
        printf("Nom du joueur %ld\n",numJoueur);
        scanf("%s",&(CoordJoueurs[numJoueur]).nom);
        printf("Age du joueur %ld\n",numJoueur);
        scanf("%d",&(CoordJoueurs[numJoueur]).age);
        printf("ok\n");
    }
}

void afficheJoueur(CoordonneesJoueurStruct *CoordJoueur)
{
    long numJoueur = 0;
    for (numJoueur=0;numJoueur<NBR_JOUEUR;numJoueur++)
    {
        printf("Coordonnees du Joueur %ld\n",numJoueur);
        printf("%s %s %ld\n",(CoordJoueur[numJoueur]).prenom,
            ( CoordJoueur[numJoueur]).nom,(CoordJoueur[numJoueur]).age);
    }
}

int main(int argc, char *argv[])
{
    CoordonneesJoueurStruct Coordonnees[NBR_JOUEUR] = {0};
 
    initCoordonnees(Coordonnees);
    afficheJoueur(Coordonnees);
    return 0;
}
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
3
cs_fantaorange Messages postés 4 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 27 février 2009
16 févr. 2009 à 12:56
En effet j'étai un peu à coté...
Merci beaucoup,
A+
3
Rejoignez-nous