[C] Faire 'Appuyer sur une touche pour continuer' (suivi d'un printf)

Faire 'Appuyer sur une touche pour continuer' (suivi d'un printf) [C] - C - Programmation

Marsh Posté le 01-06-2005 à 16:38:07    

Bonjour,
 
J'essaye de faire un 'Appuyez sur une touche pour continuer' en C dans mon programme de façon à ce que la quantité de printf ne soit pas trop grande et ne dépasse pas du terminal.
 
J'ai essayé de faire un 'Apuyez sur Entrée pour continuer' avec scanf mais si je demande un format %c ca s'arrête pas, et si je demande du %s, ça attend un au moins un caractère avant l'appui sur Entrée. Comment puis-je faire ?
 
Mon extrait de code :

Code :
  1. printf("Appuyez sur Entrée pour afficher le menu...\n" );
  2.     scanf("%s",ccscanf); //ici ça demande au moins un caractère et Entrée
  3.     //scanf("%c",ccscanf); //ici ça s'arrête pas, je pense à cause des printf suivants
  4.     printf("Menu :\n" );
  5.     printf("------\n\n" );
  6.     printf(" 10. Charger la Terre\t\t11. Afficher la Terre\n" );
  7.     printf(" 12. Modifier la Terre\t\t13. Sauvegarder la Terre\n\n" );
  8.     // et encore moult printf


 
Merci :)
 
Bonne journée

Reply

Marsh Posté le 01-06-2005 à 16:38:07   

Reply

Marsh Posté le 01-06-2005 à 16:41:08    

getchar() :
 

ceyquem a écrit :


Code :
  1. printf("Appuyez sur Entrée pour afficher le menu...\n" );
  2.     getchar();
  3.     printf("Menu :\n" );
  4.     printf("------\n\n" );
  5.     printf(" 10. Charger la Terre\t\t11. Afficher la Terre\n" );
  6.     printf(" 12. Modifier la Terre\t\t13. Sauvegarder la Terre\n\n" );
  7.     // et encore moult printf




Reply

Marsh Posté le 01-06-2005 à 16:49:32    

c'est bizarre : ce code est dans une boucle, il marche la première fois, mais ensuite il marche plus. N'y a-t-il pas un problème de buffer à vider ou un truc du genre (je programme pas souvent en C je ne me souviens plus)

Reply

Marsh Posté le 01-06-2005 à 16:58:09    

Essaie plutôt avec :  

Code :
  1. while ( getchar() != '\n' );


Reply

Marsh Posté le 01-06-2005 à 17:02:39    

bouuh, ca marche pô non plus :|
 
Bon, je donne tout mon code ça sera plus simple à comprendre :
 

Code :
  1. while(choixmenu!=99)
  2.   {
  3.     if(choixmenu!=0)
  4.     {
  5.       printf("Appuyez sur une touche pour afficher le menu...\n" );
  6.       while(getchar() != '\n');
  7.     }
  8.     printf("Menu :\n" );
  9.     printf("------\n\n" );
  10.     printf(" 10. Charger la Terre\t\t11. Afficher la Terre\n" );
  11.     printf(" 12. Modifier la Terre\t\t13. Sauvegarder la Terre\n\n" );
  12.     printf("Entrez un choix (99 pour Quitter) : " );
  13.     scanf("%s",ccscanf);
  14.     choixmenu=atoi(ccscanf);
  15.     switch(choixmenu)
  16.     {
  17.       case 10:
  18.         charger_terre(T);
  19.         break;
  20.       case 11:
  21.         afficher_terre(T);
  22.         break;
  23.       case 99:
  24.         return(EXIT_SUCCESS);
  25.     }
  26.   }

Reply

Marsh Posté le 01-06-2005 à 17:12:57    

getch();

Reply

Marsh Posté le 01-06-2005 à 19:55:44    

ceyquem a écrit :

J'essaye de faire un 'Appuyez sur une touche pour continuer' en C dans mon programme de façon à ce que la quantité de printf ne soit pas trop grande et ne dépasse pas du terminal.


http://mapage.noos.fr/emdel/notes.htm#saisie
 
Toutes les saisies doivent être basées sur ce principe (ici, pour un <enter> ):

char s[2];
fgets(s, sizeof s, stdin);


et même mieux, suivies d'une suppression du '\n' et du nettoyage des caractères non lus :


   {
      /* chercher le '\n' */
      char *p = strchr(ligne, '\n');
 
      if (p != NULL)
      {
         /* si on l'a trouve, on l'elimine. */
         *p = 0;
      }
      else
      {
         /* Le traitement depend de l'application.
          * Par exemple, ici, on choisi d'ignorer
          * les autres caracteres.
          */
 
         /* sinon, on lit tous les caracteres restants */
         int c;
 
         while ((c = fgetc(stdin)) != '\n' && c != EOF)
         {
         }
      }
   }


 
(d'après http://mapage.noos.fr/emdel/notes.htm#fichiers )


Message édité par Emmanuel Delahaye le 01-06-2005 à 19:56:54

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 01-06-2005 à 19:56:19    


Pas standard...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

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