Comment ameliorer la fonction scanf
Fermé
William Tapi
-
18 juin 2013 à 19:43
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 18 juin 2013 à 21:43
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 18 juin 2013 à 21:43
A voir également:
- Comment ameliorer la fonction scanf
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction filtre excel n'existe pas - Forum Excel
- Comment contourner la fonction FILTRE - Forum Excel
2 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
18 juin 2013 à 20:27
18 juin 2013 à 20:27
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.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
18 juin 2013 à 21:43
18 juin 2013 à 21:43
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.