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

Résolu
Zero-One Messages postés 325 Statut Membre -  
fiddy Messages postés 11653 Statut Contributeur -
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
A voir également:

8 réponses

Zero-One Messages postés 325 Statut Membre 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
fiddy Messages postés 11653 Statut Contributeur 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
Zero-One Messages postés 325 Statut Membre 9 > fiddy Messages postés 11653 Statut Contributeur
 
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
ellana29460 Messages postés 805 Statut Membre 172
 
essaie d'utiliser les fleches du clavier avec getch et _getch, tu verra la différence.
0
KiraX10A Messages postés 260 Statut Membre 20
 
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
Zero-One Messages postés 325 Statut Membre 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
KiraX10A Messages postés 260 Statut Membre 20
 
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
Zero-One Messages postés 325 Statut Membre 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
ellana29460 Messages postés 805 Statut Membre 172
 
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
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Ellana29460,
Tu deterres un post résolu depuis presque 2 ans...
Et pour info cstdlib nest pas une librairie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KiraX10A Messages postés 260 Statut Membre 20
 
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
KiraX10A Messages postés 260 Statut Membre 20
 
Re,
Moi je ne vois que system("cls"), après je pense u'l faudrait que tu code une fonction qui fasse celà.
Sinon regarde ici => https://forums.commentcamarche.net/forum/affich-6219-effacer-un-ecran-en-c
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Effectivement, utiliser system(), ce n'est pas très C...
Pour effacer l'écran, il suffit d'utiliser une API. C'est plus compliqué, mais c'est beaucoup mieux.

Voici un petit lien : https://c.developpez.com/faq/?page=Gestion-du-clavier-et-de-l-ecran-en-mode-console#CONS_clear_screen

Cdlt
0
Zero-One Messages postés 325 Statut Membre 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
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
Zero-One Messages postés 325 Statut Membre 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