Problème en C : ma fonction recupere un '\n' - C - Programmation
Marsh Posté le 21-04-2008 à 00:41:19
La ligne suivante est suspecte
while (getchar() != '\n') ; |
Il y a un autre getchar un peu plus haut qui met le resultat dans la variable "caratère", mais pas ici, ce qui est un peu étrange. Le point virgule tout seul fait un peu pitié. D'habitude on met d'autres instructions que cette instruction vide à l'intérieur d'une boucle.
Edit : En fait, c'est peut-être normal.
Marsh Posté le 21-04-2008 à 13:44:00
Alors oui cette manière d'écrire est un genre de raccourci ça équivaut à :
Code :
|
Marsh Posté le 21-04-2008 à 16:47:55
Effectivement si tu laisses le point virgule, le compilo aura du mal à comprendre les intructions
Marsh Posté le 21-04-2008 à 18:28:37
Mais je ne veux pas éxecuter des instruction je veux juste lire l'ensemble des caractères pour vider le buffeur pour eviter des problèmes liés a la fonction scanf (compte le '\n' de la touche entrée).
Et si vous avez vu l'image vous pouvez constater que l'arreur se produit uniquement lors de la première execution. Les autres passages sur cette boucle fonctionnent parfaitement.
Marsh Posté le 21-04-2008 à 19:04:00
Tant que tu ne donneras pas le programme complet avec ce qui se passe dans le main, on ne pourra pas répondre correctement, il manque des infos.
Marsh Posté le 21-04-2008 à 20:15:20
delphin2 a écrit : Effectivement si tu laisses le point virgule, le compilo aura du mal à comprendre les intructions |
Mais où as-tu appris le C ??? C'est parfaitement correct et valable. Il s'agit d'une boucle sans instruction parce que ce qui est dans le while() est suffisant au besoin.
C'est comme pour compter le nb de lettres d'une chaine=> for (i=0; chaine[i] != '\0'; i++) ;
En fin de for, "i" contient le nb de lettres.
spolnix a écrit : Alors oui cette manière d'écrire est un genre de raccourci ça équivaut à :
|
Oui.
spolnix a écrit :
|
Effectivement ça semble correct. Cependant ta fonction lireCaractere est un peu maladroite. Moi je te proposerais de passer par fgets() ce qui a l'avantage de te laisser ton buffer clean
Code :
|
Pour plus d'infos, tu peux aller voir ce site http://mapage.noos.fr/emdel/inputs.htm qui parle des saisies "solides" en C...
Marsh Posté le 24-04-2008 à 12:16:42
Merci Sve@r je me suis renseigné sur la fonction fgets, elle est déjà beaucoup plus sécurisée même si elle est un peu plus complexe a utiliser que le bon vieux scanf ^^
En tout cas merci pour ta solution.
Marsh Posté le 24-04-2008 à 13:33:42
spolnix a écrit : Merci Sve@r je me suis renseigné sur la fonction fgets, elle est déjà beaucoup plus sécurisée même si elle est un peu plus complexe a utiliser que le bon vieux scanf ^^ |
Bien au contraire, scanf() est largement plus difficile à utiliser que fgets().
Marsh Posté le 20-04-2008 à 23:42:28
Bonjour à tous,
Je débute en C et pour l'instant j'essaye de faire un petit programme en console: le jeu du pendu.
Lors de l'éxectution de ce jeu j'ai ce petit problème :
[img=http://img134.imageshack.us/img134/579/pendurj6.th.jpg]
Voila comme vous pouvez le remarquer lorsque je rentre pour la première fois ma lettre apparemment le programme récupère le '\n'
Voici le code :
Je n'arrive pas a trouver la cause de ce petit problème pourriez vous m'aider ?