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 :

besoin d'aide pour code


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1
    Par défaut besoin d'aide pour code
    voici chers amis ;j'ai eu la petite idée de vouloir authentifier celui qui compilera mon code source.
    l'idée était de mettre un nom qui tant que celui ci n'est pas mentionne vous n'avez pas accès au reste du code source .j'ai compile mon code source et a ma grande surprise la boucle recommence toujours la même phrase "a qui ai-je l'honneur" même lorsque délibérément je rentre le mot mao.
    dite moi comment faire pour que lorsque je rentre le mot mao , je puisse avoir accès au reste du code .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <stdlib.h>
     
       void main()
    {
     
        char admin[3+1]="mao";
         do
        {printf("a qui ai-je l'honneur?\n");
        scanf("%s",admin);
        }
        while(admin!="mao");
    }

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 498
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Ce n'est pas ainsi qu'on compare deux chaines !

    Si ton compilateur ne te dit rien, c'est surement parce que tu n'as pas activé les bons warnings :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc authentification.c -Wall -Wextra
    authentification.c: In function ‘main’:
    authentification.c:14:13: warning: comparison with string literal results in unspecified behavior [-Waddress]
    Voici le code que j'ai compilé :
    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
    $ more authentification.c 
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
     
    	char admin[3+1]="mao";
    	do
    	{
    		printf("a qui ai-je l'honneur?\n");
    		scanf("%s",admin);
    		printf("Lu : '%s'", admin);
    	}
    	while(admin!="mao");
     
    	return 0;
    }
    Il faut être prudent avec scanf, comme le montre l'affichage suivant en cas d'espace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ ./a.out 
    a qui ai-je l'honneur?
    mao
    Lu : 'mao'a qui ai-je l'honneur?
    jean jacques hoarau
    Lu : 'jean'a qui ai-je l'honneur?
    Lu : 'jacques'a qui ai-je l'honneur?
    Lu : 'hoarau'a qui ai-je l'honneur?
    De plus (ce n'est pas arrivé là), il y a certainement un risque que ta chaine admin ne soit pas assez longue et que scanf génère une erreur de segmentation.

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    On peut résoudre ce problème avec :

    scanf va lire 10 caractère qui ne sont pas des retours à la ligne.
    Après, si la ligne est trop grosse, on doit pouvoir vider l'entrée standard mais je ne sais plus comment.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Par défaut
    Je peux me tromper, mais pour vider l'entrée standard, ce n'est pas ?
    Et pour le problème concernant les quotes, on peut peut-être le dé-spécialiser avec un \' ?

    Ca ne répond pas vraiment à la problématique, mais si ça peut aider...

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 498
    Billets dans le blog
    1
    Par défaut
    @Neckara : on peut ruser ainsi.

    @Vrashnak :

    Non : http://c.developpez.com/faq/index.ph...S_fflush_stdin
    C'est un problème récurrent en C, il faut être au courant de ce point.
    Tu peux aussi lire cette discussion : http://www.developpez.net/forums/d76...s/#post6685910

    De quel problème avec les quotes parles-tu ? : /

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Par défaut
    @Bktero : d'accord, désolé pour le fflush. On l'avait vu en cours sur le stdout, j'ai donc bêtement pensé que ça pouvait s'appliquer sur le stdin.
    Pour les quotes, j'ai eu l'impression qu'il y avait un problème suite à ton message de 18h22, mais en fait, j'ai juste oublié de réfléchir avant de parler.
    En tous cas, merci pour l'info sur le fflush.

Discussions similaires

  1. [WB17] Besoin d'aide pour code sur requête et zone répétée
    Par newbieWeb dans le forum WebDev
    Réponses: 2
    Dernier message: 23/05/2015, 12h38
  2. [WD11] Besoin d'aide pour code (Image)
    Par gabcouts dans le forum WinDev
    Réponses: 5
    Dernier message: 09/07/2010, 22h24
  3. connexion ado avec acces et besoin d'aide pour code vb svp
    Par essse dans le forum Visual Studio
    Réponses: 0
    Dernier message: 06/03/2009, 10h57
  4. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 07/11/2005, 00h30

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