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 :

Inclure un texte dans une condition « if »


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Inclure un texte dans une condition « if »
    Bonjour tout le monde,
    J'ai un problème car mon frère m'a mis au défi de créer un faux siri mais je suis bloqué au moment du premier choix de réponse :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    #include "if1.h"
    #include "if2.h"
    #include "if3.h"
     
    int main()
    {
        char reponse[100];
        char personnenom[100];
        int contenue = 0;
        FILE* fichier = NULL;
        FILE* his = NULL;
     
        fichier = fopen("memoir.txt", "r+");
        his = fopen("histor.txt", "r+");
        printf("Hello \nQuel est votre nom ?\n");
        scanf("%s", &personnenom);
        fprintf(fichier, "%s", personnenom);
        fprintf(his, "nom = %s", personnenom);
        fclose(fichier);
        printf("Hi ");
        fichier = fopen("memoir.txt", "r");
     
        do
        {
            contenue = fgetc(fichier);
            printf("%c", contenue);
        } while (contenue != EOF);
     
        printf("\nComment vas tu ?");
        scanf("%s", &reponse);
        fprintf(his, "reponse = %s", reponse);
     
        if (reponse == "bien")
        {
            rep1;
        }
        else if (reponse == "bof")
        {
            rep2;
        }
        else if (reponse == "mal")
        {
            rep3;
        }
        else
        {
            printf("je n'ai pas compris");
        }
     
    }
    Le problème est que quelque soit le texte entré il me dit "je n'ai pas compris"

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour et bienvenue,

    Malheureusement, en C, tu ne peux pas directement des chaînes de caractères directement avec « == ». Celles-ci ne sont pas des types natifs. À la place, elles sont résolues en un pointeur de type « char * » qui indique l'endroit en mémoire où elles se trouvent. Pour comparer le contenu de deux chaînes, il faut utiliser strcmp() (String Compare).

    Bon courage.

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Merci
    Merci de ton aide, pourrai tu me donner un exemple, car je suis nouveau dans se milieux et je ne comptent pas vraiment la syntaxe a utilisé

  4. #4
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Fais un effort. La manipulation de chaînes de caractères est probablement le sujet le plus traité en C.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Fais un effort. La manipulation de chaînes de caractères est probablement le sujet le plus traité en C.
    C'est vrai mais là, il débute totalement. La manipulation des chaînes en C n'est franchement pas ce qu'il y a de plus intuitif. On peut lui montrer la marche à suivre le temps qu'il pratique un peu et qu'il puisse ensuite faire ses recherches seul…

    Citation Envoyé par leolvcdb Voir le message
    Merci de ton aide, pourrai tu me donner un exemple, car je suis nouveau dans se milieux et je ne comptent pas vraiment la syntaxe a utilisé
    En bref :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        if(!strcmp(reponse,"bof")) {}
    Il s'agit d'une fonction qui lit les deux chaînes passées en argument et les compare. La fonction en question est normalisée, fait partie de la bibliothèque standard et est bien la manière officielle de faire cela en C. Est est incluse par <string.h>. Comme tu peux le le lire dans le lien passé dans mon précédent commentaire, la fonction renvoie une valeur négative, nulle ou positive, si la première chaîne est respectivement inférieure, égale ou supérieure à la seconde. D'où le « ! » dans mon exemple, qui introduit une négation logique.

    À noter que la page en question est une « man page » (ou « page du manuel ») qui sont un héritage des tout premiers systèmes UNIX. Elles sont toujours d'actualité sur ces systèmes et sont la référence numéro 1 pour tous les programmeurs C. Il faudra prendre le réflexe de les consulter. :-)

    Bon courage.

  6. #6
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    C'est vrai mais là, il débute totalement. La manipulation des chaînes en C n'est franchement pas ce qu'il y a de plus intuitif. On peut lui montrer la marche à suivre le temps qu'il pratique un peu et qu'il puisse ensuite faire ses recherches seul…
    Tu déconnes, j'espère.. Le gars ne dit pas qu'il n'a pas compris le cours C : il ne l'a même pas assimilé, voire lu.

    Ton premier message était parfait et suffisant. Mais libre à toi d'investir du temps dans ce genre de fil, perso j'ai autre chose à faire. Je suis en tout cas convaincu que ça ne participe pas à faire de l'OP un bon programmeur.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/08/2007, 17h23
  2. Réponses: 5
    Dernier message: 02/04/2007, 14h46
  3. comment ecrire du texte dans une window application
    Par gaut dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/07/2003, 10h23
  4. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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