Récupérer un espace avec fgets [C] - C - Programmation
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').
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"
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().
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] ▼