Getch sous windows
seo610
Messages postés
705
Statut
Membre
-
seo610 Messages postés 705 Statut Membre -
seo610 Messages postés 705 Statut Membre -
Bonjour,
Dans le code suivant, tout semble normal, sauf que au bout d'un certain temps, en appuyant sur les touches directionnelles, le programme se ferme automatiquement, sans afficher le printf de la fin.
#include <stdio.h>
#include <stdlib.h>
int lire();
int main()
{
while(1)
{
printf("%c\n", lire());
}
printf("Fin du programme totalement génial.\n");
}
int lire()
{
int a = 0;
a = getch();
if(a == 224)
a = getch();
return a;
}
J'aimerais bien savoir c'est quoi qui cause ça. J'ai un doute que c'est l'oeuvre de getch. (J'ai compilé sous Vista avec gcc de Mingw)
Merci
Dans le code suivant, tout semble normal, sauf que au bout d'un certain temps, en appuyant sur les touches directionnelles, le programme se ferme automatiquement, sans afficher le printf de la fin.
#include <stdio.h>
#include <stdlib.h>
int lire();
int main()
{
while(1)
{
printf("%c\n", lire());
}
printf("Fin du programme totalement génial.\n");
}
int lire()
{
int a = 0;
a = getch();
if(a == 224)
a = getch();
return a;
}
J'aimerais bien savoir c'est quoi qui cause ça. J'ai un doute que c'est l'oeuvre de getch. (J'ai compilé sous Vista avec gcc de Mingw)
Merci
A voir également:
- Getch sous windows
- Clé windows 8 - Guide
- Montage video gratuit windows - Guide
- Windows movie maker - Télécharger - Montage & Édition
- Windows ne démarre pas - Guide
- Restauration systeme windows 10 - Guide
2 réponses
Erreur classique : Si le programme affiche le dernier printf il n'a plus rien à faire donc il se ferme. Si tu veux avoir le temps de voir le message, il faut rajouter une pause à la fin : un getch de plus par exemple.
Par contre je serais étonné qu'il y arrive à ce dernier printf, car ta boucle infini ne peut être interrompu que par une erreur de lecture qui va fermer le programme sans aller afficher cette ligne...
Remarque au passage : la fonction main a type de retour int, il serait donc bien vu de faire un return à la fin de la fonction (0 si le programme se déroule bien).
Par contre je serais étonné qu'il y arrive à ce dernier printf, car ta boucle infini ne peut être interrompu que par une erreur de lecture qui va fermer le programme sans aller afficher cette ligne...
Remarque au passage : la fonction main a type de retour int, il serait donc bien vu de faire un return à la fin de la fonction (0 si le programme se déroule bien).
seo610
Messages postés
705
Statut
Membre
102
Je vais préciser que je le lance en ligne de commande, donc une pause à la fin est inutile et le programme n'est que superflu, on peut se passer de convention pour ne rien alourdir et se concentrer sur l'essentiel. Le printf à la fin est là pour démontrer qu'il y a justement une erreur qui fait fermer le programme et non quitter la boucle. Donc ce que j'aimerais savoir c'est quoi qui cause ça.