[C]Récupérer un espace avec fgets

Récupérer un espace avec fgets [C] - C - Programmation

Marsh Posté le 06-12-2010 à 10:05:31    

Bonjour,
 
Dans mon programme je demande à l'utilisateur de nommer sont héros en utilisant fgets pour récupérer la chaine de caractères mais voici mon soucis :
 
Si il rentre un espace ce qui suit n'est pas prit en compte  
 
De plus je veux limiter la saisie a 20 caractères mais lors ce que l'utilisateur rentre plus de 20 caractères le programme renvoie le nom avec juste les 20 premier caractères mais ensuite le programme plante alors que je souhaiterai qu'il retourne :"veuillez saisir a nouveau un nom de 20 caractères au plus"
 

printf("Vous avez choisi un Guerrier Elfe\n" );
      printf("Nommez-le : " );
      fgets( equipe1.perso[i].nomperso, 20, stdin);;
      printf("Votre Guerrier Elfe se nomme donc : %s\n",equipe1.perso[i].nomperso);
      fflush(0);
      printf("Appuyez sur Entrée pour continuer.\n" );
      getchar();


---------------
▼ [ACH/VDS] ▼
Reply

Marsh Posté le 06-12-2010 à 10:05:31   

Reply

Marsh Posté le 06-12-2010 à 13:40:56    

fgets() ne fait rien de particulier avec les espaces (il s'arrête seulement au premier newline ou à la fin du fichier). Si tu as un problème avec les espaces, le problème est ailleurs dans ton code.
 
Pour le test sur la longueur du nom, tu peux parcourir les N caractères de equipe1.perso[i].nomperso à la recherche d'un '\0'. Si tu n'en trouve pas, c'est le nom a été tronqué. Par contre si tu veux accepter jusqu'à 20 caractères dans un nom, il te faut un buffer de 22 caractères (20 + 1 pour le '\n' + 1 pour le '\0').

Reply

Marsh Posté le 06-12-2010 à 13:54:58    

en fait je cherche un moyen de pouvoir accepter un  nom avec un espace  
 
Ex : Je suis un nom (ca va rendre seulement "je" )
 
alors que je souhaiterai qu'il me rende : "je suis un nom"


---------------
▼ [ACH/VDS] ▼
Reply

Marsh Posté le 06-12-2010 à 15:21:31    

Je plussoie matafan.
Le problème n'est pas dans le fgets() car fgets() ne fait rien de particulier avec les espaces. Voir la doc de fgets().

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed