pb avec fgets

pb avec fgets - C++ - Programmation

Marsh Posté le 04-02-2003 à 21:26:26    

Voilà mon programme:

Code :
  1. do{
  2. printf("> " );
  3. fgets(buffer,200,stdin);
  4. ...traitement
  5. }while(strcmp(buffer,"quitter" )!=0);


 
Le problème est que la boucle est executée une fois avant que je puisse saisir qque chose. J'obtiens deux '>' avant la demande de saisie...

Reply

Marsh Posté le 04-02-2003 à 21:26:26   

Reply

Marsh Posté le 04-02-2003 à 21:29:59    

ché po. fait un fflush(stdout) apres ton rpintf

Reply

Marsh Posté le 04-02-2003 à 21:31:54    

ça ne change rien...

Reply

Marsh Posté le 04-02-2003 à 21:35:59    

ben chez moi ça fonctionne tres bien, sauf la comparaison ( à toi de trouver pourquoi) et la sortie (il serait prudent de regarder le code fgets histoire de détecter EOF ou un autre problème (ben ouais, on quitte un shelle en tapant CTRl-D, alors)

Reply

Marsh Posté le 04-02-2003 à 21:37:57    

C'est quoi le pb de la comparaison: le \0\n ?

Reply

Marsh Posté le 04-02-2003 à 21:39:37    

:heink:  
 
si tu regardes, la chaine se termine toujours pas un '\n'

Reply

Marsh Posté le 04-02-2003 à 21:41:30    

Désolé, je ne voit pas ce que tu veux dire...

Reply

Marsh Posté le 04-02-2003 à 21:43:41    

ben fais des printf de ce que l'utilisateur à saisie, et si y a pas de dépassement de buffer, la chiane se termine aps un '\n' et bien evidemment "quitter"!="quitter\n"

Reply

Marsh Posté le 04-02-2003 à 21:45:24    

Si je fais un printf, je ne verrais pas les \n...
Et toujours est-il que le prog m'affiche 2 fois >

Reply

Marsh Posté le 04-02-2003 à 21:50:01    

bien sur que le '\n' s'affiche, et si le '>' s'affiche 2 fois, c'est que tu demande de l'afficher 2 fois, point final.

Reply

Marsh Posté le 04-02-2003 à 21:50:01   

Reply

Marsh Posté le 04-02-2003 à 21:53:10    

Tu vois bien que je ne demande pas le ">" 2 fois. Je crois qu'il y a un problème de flush sur l'entrée standard.
Par contre, que je metter quitter avec ou sans le \n, cela ne change rien au test.

Reply

Marsh Posté le 04-02-2003 à 21:54:53    

ecoute je sais pas ce que tu branles, j'ai tester le code meme que tu me donnes, et il fonctionne parfaitement. ce post aurait du se terminer y a longtemps

Reply

Marsh Posté le 04-02-2003 à 21:58:03    

ça doit varier d'un système à l'autre et des opérations effectuées dans le programme avant... tant pis.

Reply

Marsh Posté le 04-02-2003 à 22:01:58    

te fous pas de ma gueule

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.   char buffer[80];
  6.   do{
  7.     printf("> " );
  8.   }while(fgets(buffer, sizeof buffer, stdin)!=NULL && strcmp(buffer, "quitter\n" )!=0);
  9.   return 0;
  10. }

et ouvre tes yeux bordel

Reply

Marsh Posté le 04-02-2003 à 22:08:44    

Merci.
Désolé, je suis fatigué ce soir...

Reply

Sujets relatifs:

Leave a Replay

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