Problèmes de pointeur pour un tableau de structure [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
27 février 2009
-
Messages postés
4
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
27 février 2009
-
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

Messages postés
4
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
27 février 2009

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
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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
Messages postés
4
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
27 février 2009

En effet j'étai un peu à coté...
Merci beaucoup,
A+