lecture d'une chaine de caractère - C - Programmation
Marsh Posté le 23-02-2007 à 11:44:19
En fait ce que je me dit c'est qu'au final il faudrais pouvoir vider le buffer....
Marsh Posté le 23-02-2007 à 11:46:36
c doit être de type int.
si fgets(chaine) != EOF
si la chaine ne se termine pas par un '\n'
alors while (c = fgetc != EOF and c != '\n')
ne rien faire
Marsh Posté le 23-02-2007 à 11:49:26
ok, merci Taz
sinon, j'ai trouvé : il faut faire un fflush(stdin); après la remière saisie... je sais pas si c'est propre mais ça a l'air de marcher...
Marsh Posté le 23-02-2007 à 12:40:08
Taz a écrit : NON NON NON PUTAIN ! |
+1 sur le fond (pas sur la forme )
fflush( <flux d'entrée> ) c'est pas portable. Ca marche assez souvent mais c'est dégeux.
Marsh Posté le 23-02-2007 à 13:26:59
Ok, promis je le referai pas
Donc, sauf erreur de ma part le code de Taz donne :
Code :
|
ce qui marche... mais j'avoue ne pas bien comprendre : le fgets() va lire les 10 caractères max que l'utilisateur va taper et les mettre dans le tableau puis le reste dans un buffer. On regarde si la saisie c'est terminée par un entrée, si c'est le cas on parcout tous les caractères du buffer... et j'imagine que c'est pour vider le reste du buffer c'est ça ?
Marsh Posté le 23-02-2007 à 14:37:22
On ne vide pas le buffer. On continue la lecture jusqu'à la fin de ligne, pour la consommer. stdin c'est un fichier, avec ces fgetc, on fait juste en sorte d'avancer un peu jusqu'à trouver le début de prochaine ligne.
Marsh Posté le 23-02-2007 à 16:55:17
Amonchakai a écrit : ok, merci Taz |
Merci, faut encore que je change de clavier...
http://mapage.noos.fr/emdel/notes.htm#fgetc
http://mapage.noos.fr/emdel/inputs.htm
Marsh Posté le 23-02-2007 à 17:58:23
Taz a écrit : On ne vide pas le buffer. On continue la lecture jusqu'à la fin de ligne, pour la consommer. stdin c'est un fichier, avec ces fgetc, on fait juste en sorte d'avancer un peu jusqu'à trouver le début de prochaine ligne. |
Ok, merci j'ai compris
Emmanuel Delahaye a écrit : Merci, faut encore que je change de clavier... |
J'avais déja regardé... mais sûrement lut trop vite car j'avais pas trouvé ma réponse... Donc je vais regarder à nouveau.
Merci à vous
ps : promis je vous ressortirai plus jamais cette horreur
Marsh Posté le 23-02-2007 à 11:42:09
Bonjour,
J'ai un petit problème avec la lecture de chaine de caractère. Je vousdrais lire une entrée clavier, bein sûr sans utiliser scanf... Donc rien de plus facile : je fais un while avec un fgetc(). mais le problème c'est que je ne veux pas que l'utilisateur rentre trop de caractères. Donc je pensais tout bêtement rajouter une condition, sur le nombre de caractères... mais le truc c'est que fgetc() est buffeurisé donc pas moyen de compter les caractères... Ce que je voudrais c'est arrêter la saisie après le dépassement de capacité de mon premier tableau...
car là si la personne maintient un bouton enffoncé... et bien j'ai les 10 premier caractères dans le premier tableau et les 10 suivants dans le deuxième...
Est ce que vous saurriez comment faire pour arrêter la saisie et afficher le deuxième message ?
Merci