Saisie clavier - C++ (code::blocks)

Résolu
Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je débute en C et je suis en train de faire un petit programme qui regroupe des instructions et fonction que j'ai vue et appris (comme un récapitulatif), alors mon problème, je cherche une fonction qui stop le programme et qui attend la saisie d'une touche au clavier.
par exemple demander a l'utilisateur d'appuyer sur "a" pour continuer (sans validation par entrer).

Merci
--
Tout n'est que Zero et Un

8 réponses

  1. Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   9
     
    re:
    j y suis j'ai trouvé

    voila un exemple :
    //-------------------------------------------------------------------------
    #include <iostream>
    #include <conio.h> //la bibliothèque de getch()

    using namespace std;

    int main()
    {
    char c; //variable caractère
    cout<<"Appuyer sur ""q"" pour quitter"<<endl;
    while (c!='q') //tant que c est différent de q on boucle
    {
    c=getch(); //affecter une touche a c
    }
    return 0;
    }
    //---------------------------------------------------------------------------------
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Salut,

      A noter que :
      il vaut mieux utiliser _getch que getch et q
      et il vaut mieux utiliser do while ou alors penser à initialiser la variable c.

      Mais sinon, c'est correct malgrés la non-portabilité.

      Cdlt
      0
      1. Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   9 > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        J'ai essayé avec _getch() je ne vois pas de différence avec getch() mais bon puisque vous l'dites j'utiliserai _getch().
        Et parlant de portabilité ça serait mieux que j'utilise des fonctions et instructions plus portable, alors si vous avez mieux je suis preneur.

        Disant que pour _getch() c'est réglé, a présent je cherche un CLS (effacer l'écran).
        évitez : system("cls");

        On m'a déjà proposé Clrscr(); de <conio.h> mais elle n'est pas reconnue ou bien je n'est pas su l'utiliser, alors ça serait bien que vous m'aidiez.

        Merci
        0
    2. ellana29460 Messages postés 805 Statut Membre 181
       
      essaie d'utiliser les fleches du clavier avec getch et _getch, tu verra la différence.
      0
  2. KiraX10A Messages postés 209 Date d'inscription   Statut Membre Dernière intervention   21
     
    Bonjour, heu moi je vois ca avec une boucle while:

    char caract = 0;
    
    while ( caract != 'a' )  //Tant que le caractere tapé au clavier est différent de celui demandé, on boucle.
    {
        cout << "Appuyez sur la touche ""a"" pour continuer: " << endl;
        cin >> caract;
    } 


    jspr que ca ira
    0
    1. Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   9
       
      Merci pour ta réponse j'ai essayer le code, mais cela n'a pas l'effet que je voulais, dans ton code on doit tout jours valider le "a" saisie, moi je veux que sa face effet comme par exemple dans le BASIC :

      DO:LOOP UNTIL INKEY$<>"" ' boucler jusqu'à ce qu'une touche soit frapper

      ou bien dans PASCAL :

      REPEAT
      ..
      ..
      UNTIL KEYPRESSED;


      0
  3. KiraX10A Messages postés 209 Date d'inscription   Statut Membre Dernière intervention   21
     
    Heu en C, il peut y avoir les fonction kbhit() ou encore getch() qui je pense corresondrait dans ton cas.

    Getch() attend qu'une touche soit frappée au clavier.
    Après tu la gère comme tu veux, dans une boucle ou directement dans ton programme principal.

    Tiens moi au courant
    0
  4. Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   9
     
    il reconnait pas Getch() et kbhit() peut être je dois ajouter une bibliothèque...

    mais j'ai trouvé getchar() malheureusement ça n'a pas donné les résultats attendues

    je cherche tt jour.
    0
    1. ellana29460 Messages postés 805 Statut Membre 181
       
      si tu travaille en c++ et que tu veux utiliser des fonctions de c, include la librairie cstdlib (en fait c'est stdlib.h, mais adaptée au c++)
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Ellana29460,
      Tu deterres un post résolu depuis presque 2 ans...
      Et pour info cstdlib nest pas une librairie
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. KiraX10A Messages postés 209 Date d'inscription   Statut Membre Dernière intervention   21
     
    Bonjour

    Oui excuse moi j'avais oublié de préciser la bibliothèque :s. Enfin tu l'a trouvé toi même donc tant mieux :).
    Bonne continuation
    0
  7. Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   9
     
    Pour KiraX10A , dans le dernier poste du lien que tu as donné, il y a une fonction :
    Le prog se lance sans erreur mais la fonction ne donne aucun résultat (EffaceEcranTxt).
    Mais merci quand-même.

    Merci aussi a fiddy, MAIS (tt jour le mais qui fait peur).
    Le prog se lance avec une erreur sur la ligne ou y a écris : CONSOLE_CONS_BUFFER_INFO Info;
    L'erreur dit que CONSOLE_CONS_BUFFER_INFO n'a pas été déclaré.
    0
    1. rosettas
       
      Il y a une erreur en effet :
      Remplacer CONSOLE_CONS_BUFFER_INFO par un CONSOLE_SCREEN_BUFFER_INFO et ça marchera tout de suite beaucoup mieux.
      0
    2. Zero-One Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   9
       
      Merci pour l'aide apporté effectivement ça marche.
      (j'avais résolu mon problème).
      ça servira a d'autre personne espérons.

      merci encore.
      0