Problème de tableau...

Résolu/Fermé
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 26 oct. 2015 à 15:28
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 27 oct. 2015 à 17:59
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 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
26 oct. 2015 à 15:42
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
26 oct. 2015 à 16:38
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 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
27 oct. 2015 à 15:23
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
27 oct. 2015 à 17:57
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 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
Modifié par Kuartz le 27/10/2015 à 18:00
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