Problème de tableau...

Résolu
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -  
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis un hyper débutant (mais alors ultra ultra) et j'essaye de faire un petit exercice en C et.... je n'y arrive pas :(

Voici mon code :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "main.h"

void affiche(int *tableau, int tailleTableau);

int main(int argc, char *argv[])
{
    int i;
    Joueur joueur[3];

    for(i = 0 ; i < 3 ; i++)
{
    printf("Tapez le pseudo du joueur %d\n", i + 1);
    scanf("%s", joueur[i].pseudo);
    printf("Quel est le Tag du joueur %d?\n", i + 1);
    scanf("%s", joueur[i].tag);
 }

printf("\n Les 3 joueurs de cette partie sont : \n \n");

   affiche(&joueur, 3);

return 0;
}

void affiche(int tableau[], int tailleTableau)
{
    int i;

    for (i = 0 ; i < tailleTableau ; i++)
    {
        printf("%d\n", tableau[i]);
    }
}


Mon header :

typedef struct Joueur Joueur;
struct Joueur
{
    char pseudo[100];
    char tag[100];
};


Le code ne me donne que des chiffres à la fin du programme. Et pour cause, ma fonction définit bien le tableau comme int. Mais je ne sais pas comment lui dire que c'est du texte... Une petite aide svp?

Merci d'avance.
A voir également:

2 réponses

Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
J'ai changé le code ainsi, mais cette fois le programme plante à la fin...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "main.h"

void affiche(char tableau[], int tailleTableau);

int main(int argc, char *argv[])
{
    int i;
    Joueur joueur[3];

    for(i = 0 ; i < 3 ; i++)
{
    printf("Tapez le pseudo du joueur %d\n", i + 1);
    scanf("%s", &joueur[i].pseudo);
    printf("Quel est le Tag du joueur %d?\n", i + 1);
    scanf("%s", &joueur[i].tag);
 }

printf("\n Les 3 joueurs de cette partie sont : \n \n");

   affiche(&joueur, 3);

return 0;
}

void affiche(char tableau[], int tailleTableau)
{
    int i;

    for (i = 0 ; i < tailleTableau ; i++)
    {
        printf("%s\n", tableau[i]);
    }
}
1
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Il faudrait voir la définition de Joueur. Je pense notamment à des pointeurs non initialisés qui expliqueraient tes problèmes.

En attendant, quelques remarques sur ton code :
affiche(&joueur, 3);
scanf("%s", &joueur[i].pseudo);
scanf("%s", &joueur[i].tag);
Il ne faut pas mettre &joueur mais joueur.

affiche(&joueur, 3);
Je te conseille plutôt de mettre :
affiche(joueur, sizeof joueur / sizeof *joueur);

De même pour for(i = 0 ; i < 3 ; i++)
Ou alors, tu peux même définir un #define TAILLE 3

Cdlt,
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Ok merci pour toutes ces infos.

Les pointeurs sont un vrai problème pour moi... Je ne comprend vraiment pas comment les utiliser..
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Je te conseille de lire un tuto (par exemple openclassroom). C'est important de comprendre leur fonctionnement, c'est la base du C.
Si tu as des questions sur les pointeurs, n'hésite pas ;-).
0
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Je suis sur Openclassroom mais même avec ça je trouve ça pas simple... Merci beaucoup en tout cas c'est très sympa :)
0