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

Résolu/Fermé
Zero-One Messages postés 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 - 23 sept. 2009 à 12:08
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 30 janv. 2014 à 07:16
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 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9
24 sept. 2009 à 01:56
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 sept. 2009 à 06:31
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 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
24 sept. 2009 à 14:26
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 689 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 12 septembre 2015 172
30 janv. 2014 à 04:43
essaie d'utiliser les fleches du clavier avec getch et _getch, tu verra la différence.
0
KiraX10A Messages postés 230 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 29 décembre 2016 20
23 sept. 2009 à 13:22
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 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9
23 sept. 2009 à 15:08
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 230 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 29 décembre 2016 20
23 sept. 2009 à 16:15
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 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9
23 sept. 2009 à 23:21
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 689 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 12 septembre 2015 172
30 janv. 2014 à 04:39
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
30 janv. 2014 à 07:16
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 230 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 29 décembre 2016 20
24 sept. 2009 à 09:23
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 230 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 29 décembre 2016 20
24 sept. 2009 à 15:07
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 sept. 2009 à 22:09
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 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9
24 sept. 2009 à 23:35
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
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 303 Date d'inscription dimanche 30 novembre 2008 Statut Membre Dernière intervention 31 octobre 2023 9
31 juil. 2012 à 14:15
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