Getch ou getchar() ? [niveau debutant]

Signaler
Messages postés
408
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
18 décembre 2012
-
Messages postés
1
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
-
:P

//---------------------------------------------------------------------------

#include <vcl.h>
#include <conio.h> // getch()
#include // cout
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
void functionA(int a,int b);
void main(void)
{
int clavier;
int clavier2;
cout<<"Saisissez le nombre de depart : ";
clavier=getchar();//on stock dans la variable clavier le nombre de debut
cout<<"Saisissez maintenant le nombre de fin : ";
clavier2=getchar(); //on stock dans la variable clavier2 le nombre de fin
functionA(clavier,clavier2);
while (!kbhit()); //attendre la saisie de l'utilisateur avant de quitter
}
void functionA(int a,int b)
{
while (a<b) { //tant que a est inférieur à b
a++; //on incremente a
printf("%c\n",a);
}
}
//---------------------------------------------------------------------------

le probleme c'est pas la compilation car le programme marche parfaitement. le bleme c'est que une foit qu'il ma demander le nombre de depart c'est bon je rentre 66 par exemple apres il me demande le nombre de fin et la paf! je rentre 1 seul chiffre et le prog se ferme auto. Se qui est byzare c que quand je met getch(); getch(); a la place de getchar() sa marche parfais met sa attend pas que je finisse mon nombre se qui fais qu'en premier nombre je peux mettre que 123456789 et en 2em nombre 123456789 mais au moins si je met 1 en premier nombre puis 9 en 2em nombre sa marque bien 123456789 alors ya 2 possibilité sois on peut faire en sorte que getch() attend que je termie mon nombre au lieu de n'accepter que 1 seul nombre ou sois on fais marcher ce getchar qui lui attend bien la fin de ma saisie mais marche pas ... MERCCI d'avance :) :clown)

3 réponses

Messages postés
1
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
7 février 2003

Salut,

Voila le code corrigé et compilé sous c++ builder sans problemes. Je serais toi je mettrait en place un systeme qui detecte si lutilisateur a saisi un nombre de fin plus petit que le nombre du debut :P

//---------------------------------------------------------------------------

#include <conio.h> // getch()
#include // cout
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
void functionA(int a,int b);

void main(void)
{
int clavier;
int clavier2;
cout<<"Saisissez le nombre de depart : ";
cin>>clavier;
cout<<"Saisissez maintenant le nombre de fin : ";
cin>>clavier2;
functionA(clavier,clavier2);
while (!kbhit()); //attendre la saisie de l'utilisateur avant de quitter
}

void functionA(int a,int b)
{
while (a<b) { //tant que a est inférieur à b
a++; //on incremente a
printf("%d\r\n",a);
}
}
//---------------------------------------------------------------------------
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003

Bonjour,

Info complémentaires ...

Je débute aussi en C et j'avais un exercice à faire
et dans cet exercice, je devais capturer les touches
au clavier et contrôler les entrées de façon à ne
faire apparaître à l'écran que les caractères valide,
soit les lettres majuscules dans ce cas-ci.

Par conséquent la fonction getch() capture le clavier
avant même que la touche ne soit affiché, c'est
pourquoi ton programme n'attends pas la fin du
nombre quand tu utilise getch().

Par opposition, getchar() attends le caractère de
fin de ligne avant de capturer la saisie au clavier.

Donc getch() capture un caractère à la fois ...
et getchar() capture une série de touches incluant
le caractère de fin de ligne EOL ou <enter>.

MiB
Messages postés
1
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008

Jme demande à quoi ta photo sert?






Uzumaki Naruto