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 :

une simple comparaison de 2 chaînes de caractères


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Haut Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut une simple comparaison de 2 chaînes de caractères
    Bonjour,

    Je suis en terminale S et j'ai pour projet de fin d'année la conception avec mon groupe d'une imprimante braille qui sera contrôlée par un rasberry pi(autant dire que vous me verrez souvent) Mais là j'en suis à la base de la base. Je connais l’algorithmique de base, et des rudiments rudimentaires basiques approximatifs de pascal, php, c++.

    J'ai voulu tenter de faire fonctionner un IF avec dev-c++ et après 3 jours de recherches infructueuses je viens m'en remettre a vous :

    Le code est très simple, le but est juste que si je rentre "fine" le programme me dis "good !" et si je rentre "bad" il me dise "hoo "

    C'est surement la syntaxe du IF mais je ne vois pas ou car j'ai respecter tout ce que j'ai vu sur le web. J'ai également essayé avec un scanf ("%s", &rep) mais sans résultat.

    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
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
        char rep[5];
        printf("hello how are you today ?\n");
        fgets(rep, 5, stdin);
        if ( rep == "fine" )
           {
           printf("good !\n");
           system("PAUSE");
           }
        else if( rep == "bad" )
            {
            printf("hooo :( \n");
            system("PAUSE");
            }
        else
        system("PAUSE");
        return EXIT_SUCCESS;
    }

  2. #2
    Invité
    Invité(e)

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pazka Voir le message
    ...et des rudiments rudimentaires basiques approximatifs de pascal, php, c++.
    Bonsoir

    "rudiments rudimentaires basiques approximatifs" c'est vraiment peu. En C, il y a des "rudiments minimums" à connaitre et l'un d'entre eux est la façon dont le C manipule les chaines de caractères.

    Pour résumer, le C ne sait pas manipuler des chaines. Tout ce qu'il connait, c'est l'adresse où commence la chaine. Donc si tu as "toto" qui se trouve en mémoire (avec 't' à l'adresse 0x10; 'o' à l'adresse 0x11 ; 't' à l'adresse 0x12; et etc...à, tout ce que le C connait c'est seulement 0x10.
    Toutefois tu es assuré que la chaine se suit en mémoire. Donc si tu as 't' en 0x10, tu es assuré d'avoir 'o' en 0x11 etc etc. Et donc à partir de 0x10 tu peux afficher toute la chaine en incrémentant simplement l'adresse et en affichant la valeur qui s'y trouve.
    Ne reste qu'un détail: comment s'arrêter d'incrémenter. Pour résoudre ce problème, les concepteurs du C ont décidé qu'une chaine serait terminée par le caractère '\0' (qui vaut 00 en valeur ascii). Donc tu montes ton adresse et tu t’arrêtes quand la valeur vaut '\0'.
    Donc si tu veux comparer 2 chaines, te faut partir du début et comparer chaque caractère des deux chaines. Heureusement les concepteurs ont déjà créé une fonction qui fait ce travail => strcmp()

    À partir de là, tu as des rudiments suffisants pour commencer à programmer en C...

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Haut Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut bien compris
    Très bien merci beaucoup, je pensais qu cela était aussi simple qu'en php mais évidement je me trompais lourdement. Je n'avais pas vu la réponse dans le FaQ.

    Désoler du dérangement et merci beaucoup pour vos 2 réponses si rapides, je m'y atèle et je chercherais mieux la prochaine fois avant de posé une autre question

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

Discussions similaires

  1. Comparaison de 2 chaînes de caractères
    Par saidma dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 19/10/2014, 23h00
  2. Réponses: 6
    Dernier message: 18/04/2014, 11h46
  3. Réponses: 2
    Dernier message: 01/07/2009, 16h56
  4. Réponses: 4
    Dernier message: 07/06/2007, 22h35
  5. Réponses: 16
    Dernier message: 24/10/2006, 21h37

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