Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1264 connectés 

  FORUM HardWare.fr
  Programmation
  C

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1104327
ceyquem
E falso sequitur quodlibet
Posté le 01-06-2005 à 16:38:07  profilanswer
 

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

mood
Publicité
Posté le 01-06-2005 à 16:38:07  profilanswer
 

n°1104341
Elmoricq
Modérateur
Posté le 01-06-2005 à 16:41:08  profilanswer
 

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




n°1104365
ceyquem
E falso sequitur quodlibet
Posté le 01-06-2005 à 16:49:32  profilanswer
 

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)

n°1104389
Elmoricq
Modérateur
Posté le 01-06-2005 à 16:58:09  profilanswer
 

Essaie plutôt avec :  

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


n°1104396
ceyquem
E falso sequitur quodlibet
Posté le 01-06-2005 à 17:02:39  profilanswer
 

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.   }

n°1104414
Spir
Words are timeless
Posté le 01-06-2005 à 17:12:57  profilanswer
 

getch();

n°1104570
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-06-2005 à 19:55:44  profilanswer
 

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/
n°1104572
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-06-2005 à 19:56:19  profilanswer
 


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/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

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

 

Sujets relatifs
Equivalent de la touche "tab" mais avec la touche "Enter" [vb.net ]Capter la touche CTRL sous Firefox
[AWK/C] Justification "centrée" avec printf() ?Suivi d'objet dans une vidéo
Touche Entrerdifference entre printf et cout ????
évènement touche enterprintf("%s") sur fonction renvoyant une chaîne [RESOLU]
Outils de suivi de consommable : Calcul de la consommation????[ORACLE][PL/SQL] un équivalent de printf?
Plus de sujets relatifs à : [C] Faire 'Appuyer sur une touche pour continuer' (suivi d'un printf)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR