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 :

probleme de condition


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 73
    Par défaut probleme de condition
    bonjour , je debute dans le c , j'ai un code très simple et dejà je bloque , mauvaises habitudes prises avec d'autres langages ,

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        char ans[3];
     
     
        printf("Hello world!\n");
        printf("Do you want to connect socket ?\n");
     
        fgets(ans, sizeof ans, stdin);
     
        if (ans[3] == "yes") printf("socket connected !\n");
        else printf("ok , socket is not connected");
     
        return 0;
     
    }
    la condition ne s'éffectue pas , je sais bien que ça vient de

    mais je ne vois pas , merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Pour comparer deux chaines de caractères, il faut utiliser la fonction strcmp ou strncmp : http://man.developpez.com/man3/strcmp.3.php
    Là, tu compares un entier (de type char) avec une adresse. Ca ne peut pas marcher.

    Ton tableau est trop petit : une chaine de caractères se finit toujours par le caractère '\0' ; il faut en tenir compte pour la taille du tableau.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 81
    Par défaut
    Pour comparer deux chaînes de caractères en C, il faut utiliser les fonctions strcmp, strncmp, etc. déclarées dans string.h.

    Je te donne le lien correspondant vers la FAQ C :
    http://c.developpez.com/faq/?page=st...STRINGS_strcmp

    [EDIT]Trop lent [/EDIT]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 73
    Par défaut
    voila , je n'ais pas eu le temps de m'y repencher avant ,

    avec tous vos conseils , je suis arrivé à ça :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
     
    int main()
    {
        char ans[10];
        char stock[10];
        int egal = 0;
     
     
        printf("Hello world!\n");
        printf("Do you want to connect socket ?\n");
     
        strcpy(stock, "yes");
     
        scanf("%s", ans);
        egal = strcmp ( ans, stock);
     
     
    if (egal == 0)
     
        printf("socket connected !\n");
     
     else
     
        printf("ok, socket is not connected !\n");
     
     
     
     
        return 0;
     
    }
    ce n'est pas du tout sécurisé , je comprends bien que si on entre plus de neufs caracteres le prog va planter,

    mais j'ai bien compris le fonctionnement des chaines de caractères en c !!

    merci a vous je tagge en résolu

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Par défaut
    Tu peux sécuriser ça en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    scanf("%3s", ans);
    Comme ça seuls les 3 premiers caractères seront retenus (il faut quand même déclarer ans comme ceci :

    Pour avoir le \0 sinon ton strcmp() va retourner une valeur totalement aléatoire.
    Sinon étant donné que tu stocke "yes" dans ta variable stock, si tu ne l'utilise pas plus loin dns ton programme, tu peux la déclarer ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char stock="yes";
    //EDIT
    char* stock="yes";
    Tu économise une ligne

  6. #6
    Membre expérimenté Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Par défaut
    Je crois qu'il faudrait plutôt faire:
    mais ce n'est sans doute qu'une erreur de fatigue de la part de adrienmgs

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Par défaut
    En effet j'ai posté un peu vite

    J'ai edit de sorte que ta réponse garde son sens.

    Merci de m'avoir corrigé !

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 05/05/2006, 09h13
  2. [AS] Probleme de condition
    Par Treuze dans le forum Flash
    Réponses: 8
    Dernier message: 25/03/2006, 15h27
  3. probleme de condition et de boucle
    Par avantoux dans le forum ASP
    Réponses: 5
    Dernier message: 23/03/2006, 08h59
  4. Probleme de conditions
    Par guy2004 dans le forum Langage
    Réponses: 11
    Dernier message: 05/11/2005, 14h54
  5. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25

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