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

Langage C++ Discussion :

Petit Problème strtok()


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut Petit Problème strtok()
    Bonjour,

    J'ai un petit problème avec un projet que je dois faire. Nous n'avons pas absolument besoin d 'utiliser la fonction strtok() mais je ne vois pas comment le faire autrement. Premièrement, je n'est pas parfaitement compris la fonction strtok() et cela ne m'aide pas.

    Principalement, nous avons un fichier externe où nous devons lire certaine données tels que : 012345 Nom Etudiant * e10 99 Nom Cours
    ...
    Le fichier continue sur environ 20 lignes. Les premiers chiffres sont bien entendu le numéro de la personne. Plusieurs étudiants peuvent avoir le même cours et un même étudiant peut avoir plusieurs cours.

    Le but du programme, étant de faire un bulletin sur un fichier externe, je ne comprend pas comment je dois mettre le strtok() par rapport à un fichier externe et mettre ses données dans un tableau.

    De l'aide serait bien apprécier :)

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    La fonction strtok (tout comme la quasi totalité des fonctions str*) est une fonction issue du C.

    Tu as donc deux solutions:
    • soit, tu veux coder en C, et tu te trouves dés lors dans la mauvaise section (dis le dans ce cas, nous nous ferons un plaisir de déplacer la discussion )
    • Soit tu veux coder en C++, et il faut savoir que, bien que C++ présente, pour de stupides raisons de compatibilité historique, une grande partie des fonctions issues du C, il vaut mieux donner la préférence, du moins dans un premier temps, à ce qui est propre à C++, parce que c'est plus clair et beaucoup plus sécurisant
    Si tu choisi la deuxième solution, le code final pourrait être aussi simple que
    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
    void lecture(std::string const & filename)
    {
        std::ifsteram ifs(filename.c_str());
        std::string line;
        while(std::getline(line, ifs) // tant qu'il y a une ligne à récupérer
        {
            // on la place dans un flux de conversion
            std::stringstream ss;
            ss<< line;
            // et on essaye de récupérer le contenu
            int num_eleve;
            int nom_eleve;
            char separator ; // pour le caractère "*" 
            int num_cours;
            int nom_cours;
            if(! ss>> num_eleve
                   >> nom_eleve
                   >> separator
                   >> num_cours
                   >> nom_cours )
            {
                /* si l'on n'y est pas arrivé, on lance une execption (à 
                 * définir toi-même par ailleurs )
                 */
                throw BadFileFormat();
            }
            /* toute la gestion des valeurs récupérées */
        }
        /* ce qu'il faut (éventuellement) faire de l'ensemble des données
         * récupérées
         * (NOTA: le principe de délégation devrait t'inciter à ne pas faire
         * beaucoup plus ici ;-) )
         */
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut Merci
    Merci infiniment pour a réponse

Discussions similaires

  1. un petit problème d'algo
    Par supertramp dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 12/10/2004, 20h13
  2. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24
  3. Réponses: 17
    Dernier message: 13/07/2004, 20h37
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 12h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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