String dans structure

Résolu/Fermé
fbdidi - 14 avril 2014 à 17:25
 fbdidi - 15 avril 2014 à 00:03
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

[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 14/04/2014 à 18:49
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
merci mais ceci
fgets(humain.nomJoueur, sizeof char * 20, stdin);
ne fonctionne pas. J'ai une erreur
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
14 avril 2014 à 23:37
As-tu réalisé l'allocation avec malloc() comme l'a dit [Dal] ?
0
ah effectivement ^^'

merci c'est nikel
0