Comment ameliorer la fonction scanf
William Tapi
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
slt j'ai un probleme en C. en fait, pour recuperer les donnees de l'utilisateur: par exemple un nombre en entree, on utilise generalement la fonction scanf, or ce qui se passe est que l'utilisateur finit d'entrer ses donnees avant que le programme continue de s'executer. Mais je veux que chaque fois qu'il tape un caractere en entree, le programme s'execute sans qu'il n'ait besoin de taper la touche ENTREE
A voir également:
- Comment ameliorer la fonction scanf
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
2 réponses
Le problème, c'est que lorsque tu tapes tes caractères c'est sur une invite de commande, une console, un terminal (peu importe le nom), c'est à dire une petite fenêtre qui sert d'interface pour lire les données et les envoyer au programme. Ce n'est donc pas directement le programme qui lit les caractères, il ne fait que lire ce que la console lui a envoyé. Tu dépends donc complètement du fonctionnement de la console qui n'enverra jamais aucune donnée tant que tu n'as pas appuyé sur entrée, ou une autre combinaison de touches acceptable (Ctrl+C par exemple). Le seul moyen de s'en sortir est d'utiliser une autre interface (graphique) que la console qui enverrait chaque touche appuyée, ce qui complique pas mal le programme.
Bonjour,
Une autre alternative est de passer le terminal en raw.
Rien de portable, cela dépend donc de son OS.
Sous windows, tu peux utiliser la fonction _getche() qui te permettra de lire un caractère sans appuyer sur la touche entrée. A toi de gérer la boucle for pour lire une séquence de caractère. A toi de gérer également les conversions en nombre (strtol()). Etc.
Sinon, tu peux utiliser une bibliothèque (pas forcément graphique) PDCurses / NCurses.
Note bien que ton problème n'est pas d'améliorer scanf() : d'ailleurs t'auras bien du courage, il s'agit de l'une des fonctions les plus puissantes du C.
Une autre alternative est de passer le terminal en raw.
Rien de portable, cela dépend donc de son OS.
Sous windows, tu peux utiliser la fonction _getche() qui te permettra de lire un caractère sans appuyer sur la touche entrée. A toi de gérer la boucle for pour lire une séquence de caractère. A toi de gérer également les conversions en nombre (strtol()). Etc.
Sinon, tu peux utiliser une bibliothèque (pas forcément graphique) PDCurses / NCurses.
Note bien que ton problème n'est pas d'améliorer scanf() : d'ailleurs t'auras bien du courage, il s'agit de l'une des fonctions les plus puissantes du C.