problème d'inactivité suivie d'une saisie de texte - C - Programmation
Marsh Posté le 09-04-2008 à 16:06:57
J'avais vu la fonction kbhit() mais je n'avais pas testé (pensant qu'elle "voyait" les pressions de touches, et non si une touche a été pressée).
Cette petite nuance m'a donc permis de trouver comment "vider" tous les caractères non voulus.
Au cas où ça pourrait servir à quelqu'un, il suffit d'ajouter juste avant le gets() ces 2 lignes qui permettent de "prendre" un caractère tant qu'il y a un caractère qui peut l'être, avant le gets()
Code :
|
Marsh Posté le 10-04-2008 à 14:07:50
Salut
ces fonctions ne sont pas portables. Si quelqu'un connait une solution portable ça pourrait être intéressant. Merci quand même d'avoir posté ta solution, ça peut servir à d'autres.
autre chose:
BOGUES
N'utilisez jamais gets(). Comme il est impossible de savoir à l'avance combien de caractères seront lus par
gets(), et comme celui-ci écrira tous les caractères lus, même s'ils débordent du tampon, cette fonction est
extrèmement dangereuse à utiliser. On a déjà utilisé ce dysfonctionnement pour créer des trous de sécurité.
UTILISEZ TOUJOURS fgets() À LA PLACE DE gets().
Marsh Posté le 08-04-2008 à 22:50:41
Bonjour,
Je suis confronté depuis la semaine dernière à un problème et je ne trouve pas comment m'en sortir.
En gros, mon programme est inactif pendant un moment, et après vient un gets().
Le problème, c'est que si l'utilisateur presse des touches pendant la période d'inactivité qui précède le gets(), on les retrouve "dedans". Si en plus par malheur on presse Entrer pendant l'inactivité... ça valide le gets() sans même que l'utilisateur n'ait pu écrire ce qu'il veut.
Au cas où ce que je dis n'est pas très clair, testez ce bout de code en tapant plein de caractères durant les 2secondes de pause :
Existe-t-il une fonction pour "vider" ce qui a été éventuellement tapé avant le gets() ?
Ou, si ce n'est pas faisable, quelqu'un aurait une idée pour y remédier ? J'ai pas envie de recoder un gets() en écoutant les pressions de toutes les lettres... =P
Merci par avance