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 fonction


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Par défaut probleme de fonction
    bonjour j'ai créer un petit programme qui demande à stocker une chaine de caractère pour l'écrire dans un fichier puis à le lire.en théorie aucun soucis je sais que ça marche! par contre je voulais avoir le choix de retourner dans ma fonction d'écriture pour inclure de nouvelle donnée et là rien ne se passe par contre pour quitter dans mon switch j'accède bien à ma fonction end. qui peut m'aider?

    code en c++

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream.h>
    #include<fstream.h>
     
    using namespace std;
    string contenu;
    string donnees;//variable string
    char reponse;
    void ecriture();
    void lecture();
    int fin ();
    int choix();
     
     
    int main()
    {
     ecriture();
     return 0;
    }
     
    void ecriture()
    {
        cout << "Tapez votre phrase\n";
        cin >> donnees;
        ofstream fichier("fichier.txt", ios :: out);//ouverture du fichier en ecriture
        fichier <<"x"<< donnees <<"x"<<"\r\n";//ecriture et inclusion des marqeurs
        fichier.close();
        donnees.clear();
        cin.clear();
        choix();
    }
    void lecture()
    {
        fstream fichier("fichier.txt", ios :: in);//ouverture du fichier en lecture
        getline(fichier, contenu);
        fichier.close();
        size_t size = contenu.size() +1;//buffer pour copier string
        char * buffer = new char[ size ];
        // copier la chaîne
        strncpy( buffer, contenu.c_str(), size );
        // utiliser le buffer
        char *contenuoutinclusion;
        contenuoutinclusion = strtok(buffer, "x");
        cout << "votre texte : " << contenuoutinclusion << "\n";
        // libérer la mémoire
        delete [] buffer;
        contenu.clear();
        fin();
    }
    int choix()
    {
     cout<<"Voulez vous enregistrer d autres donnees ?\n";
     cin>>reponse;
     
     switch(reponse)
     {
         case'oui':
         {
         ecriture();
         }
         break;
         case'non':
         {
         fin();
         }
         break;
     }
    }
    int fin()
    {
        system("PAUSE");
        return 0;
    }

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    je suis surpris que switch(reponse) compile.
    Tu ne peux utiliser de switch sur un string mais uniquement des ==.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Par défaut
    je n'ai pas bien compris ta réponse mais j'ai souvent utilisé mes switch tel quels et aucun soucis j'avais fait plusieus test pour voir si cela marcherait. mais ce qui m'enerve c'est de ne pas retourné dans ma fonction d'ecriture c'est comme si il la sautait, la prenant comme déja faite

  4. #4
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Par défaut
    exact le souci viens de ma fonction choix bizarre si je met ma fonction ecriture a lafin de la fonction lecture je fais une boucle et là aucun souci il me relance ma fonction j'ai du mal à saisir...

  5. #5
    Membre expérimenté
    Homme Profil pro
    Consultant BigData
    Inscrit en
    Juillet 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant BigData

    Informations forums :
    Inscription : Juillet 2009
    Messages : 129
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Salut,
    je suis surpris que switch(reponse) compile.
    Tu ne peux utiliser de switch sur un string mais uniquement des ==.
    La variable reponse n'est pas un string.
    Ce qui m'étonne moi, c'est que le switch va tenter de comparer 'oui' ou 'non' à une variable de type char. Ou alors y'a un point que je n'ai pas compris c'est possible aussi.

    Une autre question : on dirait que ta fonction lecture() n'est pas appelée. Un oubli ? ou alors c'est juste que l'on n'a qu'une partie du code ?

  6. #6
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Par défaut
    en faisant un test je m'aperçois qu'il compare bien la réponse entre oui et non, quand je tape non la fonction cout<<"non"; fonctionne par contre pour oui ça ne marche pas c'est enigmatique.

    En fait je voulais mettre la fonction lecture que lorsque toute les données avaient été entrées.cette fonction marche bien aucun souci je l'ai testé ce matin.c'est moi switch au final qui merde.et je veu rentrer une réponse oui ou non en choix de réponse pour relancer ma fonction d'écriture.

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream.h>
    #include<fstream.h>
     
    using namespace std;
     
    char reponse;
     
     
     
     
    int main()
    {
     
        cout<<"tapez une reponse :";
        cin >> reponse;
        switch(reponse)
        {
            case'oui':
            {
            cout<<"oui";
            break;
            }
            case'non':
            {
            cout<<"non";
            break;
            }
        }
     
     return 0;
    }

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Si je me trompe pas je crois que les switch ne fonctionne qu'avec des type integral. Et quand tu faire cin >> tu ne vas stoker que la première lettre dans ta variable pas tout le mots. Mets case 'o' :, case 'n':, ca marchera surment mieux (et tape seulement une lettre, ou alors n'oublie pas de vider le flux)

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Arf, j'avais lu trop vite et n'avais pas vu que c'était un char.
    La réponse de Flob permet de gérer ton menu avec un seul caractère. Pour utiliser des chaînes de caractères, il n'y a pas d'autre choix que de passer par un test explicite de chaque valeur.

  9. #9
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Par défaut
    justement je viens de regarder mon livre^^ et j'allais posté le souci est résolu la constante peut être bien un char qui sera converti en int mais il ne stocke que le premier caractère. donc lorsque dans le flot cin je rentre oui il comparera le premier caractère en fait et là je viens de teste ya 58 min ça marche impec

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

Discussions similaires

  1. probleme de fonction javascript
    Par cach dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/07/2005, 10h34
  2. Réponses: 17
    Dernier message: 24/03/2005, 12h24
  3. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42
  4. [VB6]Problème de fonction
    Par mustang-ffw02 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/03/2004, 15h09
  5. Probleme de fonction
    Par yenna dans le forum ASP
    Réponses: 6
    Dernier message: 01/03/2004, 14h10

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