String dans structure

Résolu
fbdidi -  
 fbdidi -
Bonjour,
j'essaye d'insérer un string dans une structure comme ceci

typedef char* nom;


typedef struct{
    nom nomJoueur;
    int nbVie;
    nom nomAllier;
}joueur;

int main(void)
{
    joueur humain;
    printf("Qu'elle est votre nom?");
    scanf("%s",humain.nomJoueur);


Je crois que le problème vient de l'allocation mémoire mais comment la faire?

Merci d'avance

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut fbdidi,

    Il faut allouer l'espace mémoire avec malloc (et le libérer lorsqu'on n'en a plus besoin avec free).

    Tu peux utiliser fgets, avec le flux stdin, qui te permettra le préciser le nombre maximum de caractères saisis à prendre en compte selon la taille de l'espace mémoire réservé, et ainsi éviter les débordements de mémoire plus facilement qu'avec scanf.

    http://fr.openclassrooms.com/informatique/cours/realiser-des-saisies-securisees-grace-a-fgets/captures-securisees-grace-a-fgets-et-une-fonction-de-conversion

    Ton typedef "nom" ne sert pas à grand chose, mais c'est une affaire de goût.

    Dal
    1
    1. fbdidi
       
      merci mais ceci
      fgets(humain.nomJoueur, sizeof char * 20, stdin);
      ne fonctionne pas. J'ai une erreur
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      As-tu réalisé l'allocation avec malloc() comme l'a dit [Dal] ?
      0
    3. fbdidi
       
      ah effectivement ^^'

      merci c'est nikel
      0