Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Bloquer la saisie de caractères en C

renaudh, le mardi 24 mai 2005 à 11:28:14
Bonjour,

J'aimerais savoir comment bloquer la sasie de caractères dans un programme C.
J'ai déjà cette boucle:
while ((c<49)||(c>55)) //49=code ascii du 1 et 55=code ascii du 7
	{
		printf("%s, entrer la colonne\n",joueur1); //tant que le joueur n'entre pas un caractère entre 1 et 7 inclus, on recommence la saisie
		c=getche();
		printf("\n");
	}

qui redemande d'entrer la colonne tant que le caractère entré n'est pas compris entre 1 et 7 et ce que je voudrais, c'est que les mauvais caractères n'apparaissent pas à l'écran donc bloquer le clavier pour que l'utilisateur ne puisse rentrer que des caractères entre 1 et 7.

Merci pour votre aide.
Répondre à renaudh  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blurk, le mardi 24 mai 2005 à 12:04:58
bonjour

rempacer
c=getche();
printf("\n");

par
while((c=getche())<45 ||c>55);
printf("%c\n",c);
--

cordialement
¤
Répondre à blurk

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Marden, le mardi 24 mai 2005 à 13:33:32
A mon avis, il faudrait chercher du côté des options echo/noecho du terminal (comme pour la saisie des mots de passe).
Répondre à Marden

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
renaudh, le mardi 24 mai 2005 à 20:04:36
J'ai essayé ton traitement blurk mais ça fait bien pire, jpeux toujours rentrer n'importe kel caractère et en plus, il ne prend même plus la saisie.
Pour le echo/noecho, t'es sûr que tu parle du langage c car ça me fait penser à des scripts ça!
Répondre à renaudh

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
belette, le mardi 24 mai 2005 à 22:34:57
Moi je te propose cette modif :

printf("%s, entrer la colonne\n",joueur1);
c=getch();
while ((c<49)||(c>55))
{
c=getch();
}

Ca devrait marcher.
Répondre à belette

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
brainniac, le jeudi 13 décembre 2007 à 00:56:25
oui mais si j'ai besoin d'empecher a un utilisateur d'entrer une lettre qu'est ce que je fais?
Répondre à brainniac

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blurk, le jeudi 13 décembre 2007 à 07:49:10
quelle lettre ?
Répondre à blurk

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
brainniac, le jeudi 13 décembre 2007 à 23:37:11
ok, si dans un menu contenant 4 options et on doit entrer un chiffre pour acceder avec a l'une d'elle; disons de 1 a 4 et A la variable ki recoit la valeur. c'est simple avec une boucle while. On a qu'a dire
do
{
----------------------------------------------------
----------------------------------
}
while( A<=1 && A=>4);

mais si je dois aussi empecher en meme temps que l'utilisateur rentre des lettres de l'alphabet qu'est ce que je fais?
et j'aurai pu utiliser switch et default mais je veux que l'utilisateur ait encore le menu devant lui et de refaire le choix.
Répondre à brainniac

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Char Snipeur, le jeudi 13 décembre 2007 à 10:01:06
Salut.
regarde là http://www.cppreference.com/ sur le C I/O
essai scanf("%[1234567]\n",&c);
ou alors scanf("%c\x8",&c);
\x8 est le caratère pour backspace (effacement) code ascii 8.
Je garantie rien, mais ça peut être une idée.
sinon, essai ungetc
ou encore :
c=getch();
if (c...) printf("%c",char(8));
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur
Répondre à Char Snipeur

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blurk, le vendredi 14 décembre 2007 à 08:31:56
-le code ascii 8 correspond à la flèche vers la gauche et non à backspace (127)
-à partir du moment où on utilise scanf,le contrôle de la saisie ne s'effectue qu'au moment où l'utilisateur appuye sur la touche d'entrée.
Il est donc impossible d'empêcher qu'un caractère soit tapé à partir de cette fonction.
Les solutions pour ce genre de problème sont du type while ! kbhit() ou getch () mais c'est du borland et ça n'est pas disponible sous unix
Répondre à blurk

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Char Snipeur, le vendredi 14 décembre 2007 à 08:48:21
Non, 127, c'est supprision (DELETE) qui eface le caractère suivant.
Voir là :
http://fr.wikipedia.org/wiki/American_Standard_Code_for_Info­rmation_Interchange
et là
http://www.cppreference.com/ascii.html
Je n'arrive pas à lfaire fonctionner le truc,mais ça doit être fesable en C++ avec cin
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur
Répondre à Char Snipeur

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blurk, le vendredi 14 décembre 2007 à 14:15:23
<supr> suprime ce qui est à droite du curseur, se trouve en 2 exemplaires sur les pavés numériques et de positionement, back space supprime ce qui est à gauche du curseur, et est situé au dessus de la touche d'entrée. C'est bien de backspace qu'il s'agit.
Répondre à blurk

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Char Snipeur, le vendredi 14 décembre 2007 à 14:34:06
heu... blurk, c'est pas ce que je viens de dire ?
Donc on est daccord : 8 correspond à backspace (fleche gauche) et 127 à delete (suppr ou supprime).
Pour supprimer un caractère ecrit, j'ai testé ça et ça fonctionne :
printf("->a\x8%c\x8",char(32));
cette ligne écrit "->a" puis bacspace fait revenir le curseur en arrière d'une case, char(32) (l'espace) efface 'a' de l'écran, puis on replace le curseur derrière '->' par la commande \x8.
voila, ça résoud pas ton pb, mais ça te donne une idée de ce que l'on peut faire avec les codes ascii.
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur
Répondre à Char Snipeur

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 blurk, le vendredi 14 décembre 2007 à 17:50:18
salut sniper

en fait pas tout à fait

8 c'est la flèche gauche qui n'a pas de valeur d'effacement
9 c'est pour la flèche droite

backspace c'est comme 8 mais avec un effacement

suppr c'est comme un 9 avec un effacement

en plus, attention c'est de l'ascii, avec les pages de codes ça ne marche plus pareil
l'ascii s'arête à 127 et au delà, chaque langue (ou pays ) a son propre système de caractères accentués. (en desous de 32 qui correspond à la barre espace, pareil, ça change selon la page de codes)
sous windows, ce qui est en dessous de 32 ou au delà de 127 ne se comporte pas pareil que dans un terminal unix, ou minitel
en gros, ça va pas faire pareil sous windows et sous linux et sur un mac, parceque l'ascii de nos jours, il est recouvert par une couche de pages de codes.

essaye d'appuyer sur la touche alt, et en même temps tu tapes le code ascii, et là tu vois ce que ça fait

a+
Répondre à blurk

Résultats pour Bloquer la saisie de caractères en C

Lire une saisie au clavier (Résolu) Bonjour, Je débute dans la programmation en Java. J'essaie de rédiger un script dans lequel je dois récupérer un caractère saisi au clavier. Quelle fonction dois je utiliser ?? Un livre utilise la fonction Lire.#() mais celle-ci ne fonctionne... www.commentcamarche.net/forum/affich-1930391-lire-une-saisie-au-clavier
Téléphone bloqué du un code de sécurité perdu (Résolu) Bonjour, j'ai un téléphone nokia 3500 classic bloqué par un code de sécurité perdu, j'ai tout essayé. A votre avis que dois-je faire ?? www.commentcamarche.net/forum/affich-7427540-telephone-bloque-du-un-code-de-securite-perdu
Pb saisie des chiffres dans excel (Résolu) bonjour, je n'arrive plus à saisir les chiffres sur excel avec le pavé numérique. J'ai essayé la calculette et word qui fonctionnent très bien, j'ai redémarré l'ordi, ça n'a rien fait et j'ai bien évidemment vérfié que le... www.commentcamarche.net/forum/affich-1355310-pb-saisie-des-chiffres-dans-excel

Résultats pour Bloquer la saisie de caractères en C

Afficher des touches de clavier dans un document HTMLSi vous écrivez des documentations au format HTML, il peut être utile de symboliser des touches de clavier, par exemple lorsque l'utilisateur est invité à saisir une certaine combinaison de touches. Voici un moyen simple de le faire en... www.commentcamarche.net/faq/sujet-12526-afficher-des-touches-de-clavier-dans-un-document-html
Pipe sous MacPour saisir le caractère pipe (|) sous Mac OS, il suffit de saisir la combinaison de touches clavier suivante : Alt + Maj + L www.commentcamarche.net/faq/sujet-7374-pipe-sous-mac
Tilde sous MacPour saisir le caractère tilde (~) sous Mac OS, il suffit de saisir la combinaison de touches clavier suivante : Alt + n www.commentcamarche.net/faq/sujet-7361-tilde-sous-mac

Résultats pour Bloquer la saisie de caractères en C

Ralentir la saisie du clavier (Résolu)Bonjour, Je viens d'installer mandriva, et la vitesse de saisie du clavier est impressionnante. Je ne peux meme saisir le mot de passe car les caracteres se multiplient. J'y accede depuis un autre pc et j'obtiens la meme chose. Existe-t... www.commentcamarche.net/forum/affich-8846123-ralentir-la-saisie-du-clavier
Lara croft bloque angleterre 48% DS (Résolu)Bonjour, Je suis bloquer sur lara croft DS angleterre dans l'eglise il y a une cloche par terre un balancier et un gros oeuf quoi faire . merci www.commentcamarche.net/forum/affich-3722380-lara-croft-bloque-angleterre-48-ds
[Javascript]Controle de saisie formulaire ASP (Résolu)Bonjour à tous, J'ai un petit problème de controle de saisie dans un formulaire. Je veux en gros qu'il controle si je saisie quelque chose ou non. Voila mon code ou y a le formulaire pour que ce soit plus parlant test... www.commentcamarche.net/forum/affich-3154589-javascript-controle-de-saisie-formulaire-asp

Résultats pour Bloquer la saisie de caractères en C

Télécharger Klavaro Touch Typing TutorLes programmes d'initiation à la saisie à l'aveuglette ne se limite plus à accélérer votre vitesse de frappe, ils vont plus loin pour améliorer vos performances. Klavaro est un tuteur à la saisie au clavier. Il vous aide non seulement à parfaire... www.commentcamarche.net/telecharger/telecharger-34056517-klavaro-touch-typing-tutor

Résultats pour Bloquer la saisie de caractères en C

Le clavierPrésentation du clavier Le clavier (en anglais keyboard) permet, à la manière des machines à écrire, de saisir des caractères (lettres, chiffres, symboles ...), il s'agit donc d'un périphérique d'entrée essentiel pour l'ordinateur, car c'est... www.commentcamarche.net/contents/pc/clavier.php3