IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment ne pas afficher à l'écran ce que l'on entre en scanf


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Août 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Comment ne pas afficher à l'écran ce que l'on entre en scanf
    J'essaie de faire un programme dans lequel il faut se logger et donner son mot de passe mais j'aimerais que dès qu'il faut entrer le mot de passe, ce qui est entré au clavier ne se voit pas à l'écran.
    Peut-on rediriger un scanf vers /dev/null ? Faut-il utiliser une autre fonction?
    Merci bien d'avance!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 235
    Points : 134
    Points
    134
    Par défaut mot de passe
    salut,

    quel est ton compilateur ? getch() #include <conio.h> n'affiche pas le caractère à l'ecran, si ça ne marche pas tu peux utiliser les couleurs pour confondre le fond d'ecran et les lettres tapés avec scanf ou gets par exemple

    cmarsc ;-)

  3. #3
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    vous pouvez mettre derrière le getch (), un putch ('*')^pour afficher
    des '*' au fur et à mesure que vous frappez votre MP

    Certes, l'ignoble individu qui espionne au dessus de votre épaule verra
    le nombre de caractères de votre MP

    Pour te perfectionne je te recommande la lecture des cours et tutoriels pour apprendre la programmation C : http://c.developpez.com/cours/

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2002
    Messages : 44
    Points : 39
    Points
    39
    Par défaut
    Oui, bien sur, mais ca fait plus professionnel...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Avec TC il y a une fonction toute faite exprès pour ce que tu cherches
    je crois que c'est getpasswd ou un truc comme ca
    je l'avais utilisé pour faire un pendu, et le mot que tu tapes ne s'affiche
    en esperant que c'est bien ce que tu cherches.
    a+

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    je crois que la seule solution c'est de creer soit même la fonction avec des getch();

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    void getpassword(char *string)
    {
        int       p=0;
        char    touche;
     
        do
        {
             touche=getch();
             if (touche!=13) 
             {
                 printf("*");
                 string[p]=touche;
                 p++;
                 string[p]=0;
             }
        }  while (touche!=13);
    }
    voila !

    ah oui 13 c'est le code ASCII de enter

  7. #7
    Membre averti

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Points : 307
    Points
    307
    Par défaut
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //Saisit une ligne terminée par [Entrée] comme chaîne C, en masquant l'entrée.
    //Renvoie la longueur de l'entrée.
    size_t getpassword(char *pbuff, size_t buffsize, char mask){
        char *pcur= pbuff;
        for( ; buffsize>1 ; --buffsize){
    		 *pcur= getch();
    		 if(*pcur=='\r') break;
           putch(mask);
    		 pcur++;
        }
    	 *pcur= '\0';
    	 return pcur-pbuff; 
    }
    Version bourrin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void getpassword(char *p){
        for(;(*p=getch())!='\r';p++) putch('*');
    	 *p='\0';
    }
    "J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone."-Bjarne Stroustrup
    www.stroustrup.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/12/2011, 18h41
  2. Comment ne pas afficher un boxplot à l'écran?
    Par Vaneau dans le forum MATLAB
    Réponses: 8
    Dernier message: 09/01/2008, 12h20
  3. Réponses: 5
    Dernier message: 02/08/2004, 17h11
  4. [JTable] Comment ne pas afficher les titres ?
    Par FabienBxl dans le forum Composants
    Réponses: 3
    Dernier message: 08/10/2003, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo