Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1789 connectés 

  FORUM HardWare.fr
  Programmation
  C

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2040217
justbam
All Your Base Are Belong To Us
Posté le 06-12-2010 à 10:05:31  profilanswer
 

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] ▼
mood
Publicité
Posté le 06-12-2010 à 10:05:31  profilanswer
 

n°2040264
matafan
Posté le 06-12-2010 à 13:40:56  profilanswer
 

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').

n°2040273
justbam
All Your Base Are Belong To Us
Posté le 06-12-2010 à 13:54:58  profilanswer
 

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] ▼
n°2040298
olivthill
Posté le 06-12-2010 à 15:21:31  profilanswer
 

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().


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

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

 

Sujets relatifs
[Oracle][Résolu] Récupérer refcursor d'une function OracleSupprimer les espaces dans une variable
récupérer tout les élements d'un treeTemporisation en C++
cours en langage C/C++ et javascriptrécupérer valeur avec $_post
[C++] ShellExecuteEx + Wow64DisableWow64FsRedirectionrécuperer l'adresse IP d'un client avec recvfrom
bioskey() sous Dev C++Structure + Tableau dynamique en langage C
Plus de sujets relatifs à : [C]Récupérer un espace avec fgets


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR