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 :

Question sur affichage ?


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Question sur affichage ?
    Comment afficher le password en etoiles?

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    S'il s'agit d'une application graphique (avec fenêtre), précise la bibliothèque que tu utilises. S'il s'agit d'une application console (avec des printf), précise ton système (Windows ? Linux ? etc.). Dans ce dernier cas, il n'y a pas de solution standard, mais tu peux utiliser getch() (DOS/Windows) pour la saisie et putchar('*') pour faire l'echo. On peut facilement écrire une implémentation de getch() pour Linux, tu peux pour cela t'appuyer sur les codes de la FAQ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    #include <conio.h>
     
    int main() {
        int c;
        printf("Tapez le mot de passe : ");
        c = _getch();
        putchar('*');
        printf("\nVous avez tape : %c\n", c);
        return 0;
    }
    Ici l'utilisateur n'entre qu'un caractère, mais perfectionner ce code est tout sauf difficile.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include <stdio.h>
    #include <conio.h>
    #include <string.h> 
     
    int main() {
        char c=13,C,pass[20],passwd[]="mot";//_de_passe
        int i=0,j=0;
        int n;
        printf("Tapez le mot de passe : ");
     
        while((C =_getch())&&(C!=c)!=0) 
        {
                if (C != c){
                      putchar('*');
                      pass[i]=C;
                      i++;}
     
        }
        if (strcmp(passwd,pass)==0) {printf("\n *  Succée   *  \n");//  le problem !!!!
        printf("\nVous avez tapez :");
     
        while(j<i)
        {
                            putch(pass[j]);
                             j++;
                             }
                                           }
        else printf("\nErreure ###");
        printf("\nVous avez tapez :");
     
        while(j<i)
        {
                            putch(pass[j]);
                             j++;
                             }
     
     
        getchar();
        return 0;
    }

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Le mieux c'est que tu laisses l'utilisateur taper ce qu'il veut et après qu'il ait validé sa chaîne, c'est là seulement que tu regardes si le mot de passe est bon ou pas.

    Ici, tu trouveras une fonction qui permet de saisir une chaîne en utilisant getchar dans une boucle (tu devrais également penser à lire l'article en entier ...). Pour faire ta fonction saisir_mot_de_passe, il suffit de remplacer getchar par _getch suivi de putchar('*'). Refais ton programme puis poste à nouveau ton code.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    merci beaucoup pour l'aide
    il march très bien avec devC++
    sofe avec gcc le copilateur ne marche pas evec getch !

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    #include <stdio.h>
    #include <conio.h>
    #include <string.h> 
    #include <ctype.h>
    #include <wchar.h>
     
    int main() {
        char c=13,C,pass[20],passwd[]="mot";//_de_passe
        int i=0,j=0;
        int n;
        printf("Tapez le mot de passe : ");//scanf("%i",&n);
     
       while((C =_getch())&&(C!=c)!=0) 
        {
                if (C != c){
                      putchar('*');
                      pass[i]=C;
                      i++;}
     
        }
         printf("n=%d",i);
        if (strcmp(passwd,"mot")==0) {printf("\n *  Succée   *  \n");//  le problem !!!!
        printf("\nVous avez tapez :");
     
        while(j<i)
        {
                            putch(pass[j]);
                             j++;
                             }
                                           }
        else printf("\nErreure ###");
     
     
     
        _getch();
        return 0;
    }
    just une petit question !
    c'est quoi la déférence entre _getch et getch ?

  6. #6
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    getch était le nom original de la fonction (fin des années 80 et début des années 90) mais il est désormais remplacé par _getch pour les raisons données dans la FAQ. Le nom "getch" a toujours été conservé par souci de compatibilité avec les anciens codes mais son utilisation est déconseillé car il peut être définitivement abandonné à tout moment.

    Pourquoi ce code ne compilerait pas avec gcc ? D'abord si tu parles de gcc sous Linux, c'est normal parce que getch est une fonction MS-DOS et Windows, elle n'existe pas sous les autres systèmes. Sous Windows, ça compile même avec gcc. D'ailleurs le compilateur utilisé par DevCpp n'est autre que gcc (enfin, un portage de gcc pour Windows appelé MinGW. il existe d'autres portages ...). Sous Linux, l'équivalent de getch c'es tout simplement getchar, mais il faut avoir passé le terminal en mode brut avant.

Discussions similaires

  1. question sur affichage texte à l'écran
    Par kripteks dans le forum C
    Réponses: 2
    Dernier message: 26/07/2014, 10h10
  2. Question sur affichage différents écran
    Par Paul75 dans le forum Débuter
    Réponses: 5
    Dernier message: 31/05/2011, 14h24
  3. Question sur la gestion de l'affichage en VBA
    Par papilou86 dans le forum Access
    Réponses: 5
    Dernier message: 29/05/2006, 10h26
  4. Question sur l'affichage des voxels
    Par ToTo13 dans le forum OpenGL
    Réponses: 1
    Dernier message: 22/03/2006, 11h56
  5. [Stratégie][JSP][Bean] Question sur l'affichage
    Par ArseNic dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/02/2005, 11h19

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