Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2219 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  en C .... masquer des caracteres?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

en C .... masquer des caracteres?

n°126281
bistou
Vieux .... très très vieux!
Posté le 15-04-2002 à 19:33:07  profilanswer
 

comment faire pour masquer les caracteres que l'utilisateur rentre.
ex: il doit entre 2156 et a l'ecran pdt qu'il tape s'affiche ****


---------------
:sol:
mood
Publicité
Posté le 15-04-2002 à 19:33:07  profilanswer
 

n°126285
Jar Jar
Intaigriste
Posté le 15-04-2002 à 19:45:18  profilanswer
 

J'ai un truc dégueulasse dans mes cartons, ah voilà :

Code :
  1. /* Une fonction à la con */
  2. static void prchar(char c)
  3. {
  4.   write(1,&c,1);
  5. }
  6. /**************** readpass ****************
  7. *                                        *
  8. * Demande un mot de passe, en affichant  *
  9. * prompt, et l'enregistre dans pass.     *
  10. *                                        *
  11. ******************************************/
  12. static void readpass(char *prompt,char *pass)
  13. {
  14.   struct termios ter,oter;
  15.   int c;
  16.   int ind=0;
  17.   tcgetattr(0,&ter);
  18.   oter=ter;
  19.   ter.c_lflag &= ~ECHO;
  20.   ter.c_lflag &= ~ICANON;
  21.   ter.c_oflag &= ~ONLCR;
  22.   ter.c_oflag &= ~OCRNL;
  23.   ter.c_oflag &= ~ONLRET;
  24.   ter.c_cc[VMIN]=1;
  25.   ter.c_cc[VTIME]=0;
  26.   tcsetattr(0,TCSANOW,&ter);
  27.   printf(prompt);
  28.  
  29.   while(1)
  30.     {
  31.       c=getchar();
  32.       if (c==EOF)
  33.         exit(-1);
  34.       if (c=='\n')
  35.         {
  36.           pass[ind]=0;
  37.           break;
  38.         }
  39.       if (ind && (c==oter.c_cc[VERASE] || c==8))
  40.         {
  41.           ind--;
  42.           if (oter.c_lflag & ECHOE)
  43.             {
  44.               write(1,"\b \b",3);
  45.             }
  46.           else
  47.             prchar('\b');
  48.         }
  49.       else if(ind<8 && c>=' ' && c!=oter.c_cc[VERASE])
  50.         {
  51.           pass[ind++]=c;
  52.           prchar('*');
  53.         }
  54.     }
  55.   write(1,"\n\r",2);
  56.   tcsetattr(0,TCSANOW,&oter);
  57. }


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°126299
bistou
Vieux .... très très vieux!
Posté le 15-04-2002 à 20:12:18  profilanswer
 

Jar Jar a écrit a écrit :

J'ai un truc dégueulasse dans mes cartons, ah voilà :

Code :
  1. /* Une fonction à la con */
  2. static void prchar(char c)
  3. {
  4.   write(1,&c,1);
  5. }
  6. /**************** readpass ****************
  7. *                                        *
  8. * Demande un mot de passe, en affichant  *
  9. * prompt, et l'enregistre dans pass.     *
  10. *                                        *
  11. ******************************************/
  12. static void readpass(char *prompt,char *pass)
  13. {
  14.   struct termios ter,oter;
  15.   int c;
  16.   int ind=0;
  17.   tcgetattr(0,&ter);
  18.   oter=ter;
  19.   ter.c_lflag &= ~ECHO;
  20.   ter.c_lflag &= ~ICANON;
  21.   ter.c_oflag &= ~ONLCR;
  22.   ter.c_oflag &= ~OCRNL;
  23.   ter.c_oflag &= ~ONLRET;
  24.   ter.c_cc[VMIN]=1;
  25.   ter.c_cc[VTIME]=0;
  26.   tcsetattr(0,TCSANOW,&ter);
  27.   printf(prompt);
  28.  
  29.   while(1)
  30.     {
  31.       c=getchar();
  32.       if (c==EOF)
  33.         exit(-1);
  34.       if (c=='\n')
  35.         {
  36.           pass[ind]=0;
  37.           break;
  38.         }
  39.       if (ind && (c==oter.c_cc[VERASE] || c==8))
  40.         {
  41.           ind--;
  42.           if (oter.c_lflag & ECHOE)
  43.             {
  44.               write(1,"\b \b",3);
  45.             }
  46.           else
  47.             prchar('\b');
  48.         }
  49.       else if(ind<8 && c>=' ' && c!=oter.c_cc[VERASE])
  50.         {
  51.           pass[ind++]=c;
  52.           prchar('*');
  53.         }
  54.     }
  55.   write(1,"\n\r",2);
  56.   tcsetattr(0,TCSANOW,&oter);
  57. }

 




 
chui qu'en premiere :/ et je comprends pas tres bien ça [#e21c00]

 

[jfdsdjhfuetppo]--Message édité par bistou--[/jfdsdjhfuetppo]


---------------
:sol:
n°126303
_Kyser_
En fait, non.
Posté le 15-04-2002 à 20:21:42  profilanswer
 

man termios si tu es sous linux :)
Sinon man google ;-)
 
tcgetattr(0,&ter) permet de recupere les parametre actuels de ton term.
 
ter.c_lflag &= ~ECHO <-- modifie les parametres
 
tcsetattr(0,TCSANOW,&ter) <-- enregistre les parametres ...
 
Voila  ;)


---------------
"La mort, c'est comme la vie. Sauf que t'es mort."
n°126306
Jar Jar
Intaigriste
Posté le 15-04-2002 à 20:48:14  profilanswer
 

bistou a écrit a écrit :

chui qu'en premiere :/ et je comprends pas tres bien ça [#e21c00]


Bah moi non plus je ne comprends pas tout, j'ai repompé ça dans un autre programme.
Je pense que man tcgetattr contient les informations nécessaires.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°126350
slvn
Posté le 15-04-2002 à 21:56:31  profilanswer
 

ca concenre le "term" de unix :d  
tu peux changer la config de ton term ( config = mode canonique pa ex,echo, et puis d autre truc....)
 
 
struct termios ter,oter; // << structre de la config du term
 
 tcgetattr(0,&ter);         // initialise pour avoir la config d orine du term
 oter=ter;                 // tu la sauvegarde pour la remettre a la fin quand t aurais fin plein de connerie :))
 ter.c_lflag &= ~ECHO;             //
 ter.c_lflag &= ~ICANON;           // des modif sur avec des FLAG
 ter.c_oflag &= ~ONLCR;            //
 ter.c_oflag &= ~OCRNL;  
 ter.c_oflag &= ~ONLRET;  
 ter.c_cc[VMIN]=1;  
 ter.c_cc[VTIME]=0;  
 tcsetattr(0,TCSANOW,&ter);          // tu change la config du term avec les nouvelles modifs
 ......
....tu fias des test d ecriture etc.....
.......
 tcsetattr(0,TCSANOW,&oter);    // tu remets le term comme au debut :d

n°126418
bistou
Vieux .... très très vieux!
Posté le 15-04-2002 à 23:44:59  profilanswer
 

merci a tous


---------------
:sol:

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  en C .... masquer des caracteres?

 

Sujets relatifs
[ C ] Est-ce que le read lit les caractères '\0' ?[VB] Recuperation d'une chaine de caracteres...
ajouter un caractere tous les n caracteres dans une chaine[PHP] Supprimer tous les espaces au début d'une chaine de caracteres
[C++ (builder)] Chaînes de caractères en Unicode[debutant C++] question sur les caractères..
Code d'1 logiciel de reconnaissance de caractères[T-SQL] Comment splitter une chaine de caractères?
[PHP]-> Reg. Exp. -> couper une chaine > X caractères ..[html] affichage de caractères spéciaux comme '<' ou '>'
Plus de sujets relatifs à : en C .... masquer des caracteres?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR