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 :

[Debutant] Lecture de fichier txt


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par défaut [Debutant] Lecture de fichier txt
    Bonjour;
    Je souhaite lire des données enrégistrées sous forme de fichiers. txt et les stocker dans un tableau pour des traitements ultérieurs. Ci-joint le code que j'utilise. J'arrive apparemment à ouvrir le fichier mais lorsque j'essaie d'afficher le contenu de celui-ci, je n'obtiens qu'un seul nombre qui ne se trouve d'ailleurs pas dans le fichier.

    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
     #include <iostream>
    #include <fstream>
    #include<string>
    #include<vector>
     
     
    using namespace std;
    typedef vector<float> Tableau;
     
     
    int main()
    {
        Tableau tab;
        float x;
        int i,n;
       ifstream data("D:\SignauxTexte\sig.txt",ios::in);  // on ouvre le fichier en lecture
       i=0;
           while(data.is_open)
        {
            data>> x;
            tab.push_back(x);
            cout<<x<<endl;
            i++; //on compte le nombre de lignes
     
        }
        data.close();
     
     n = tab.size();
     for (int k=0; k<n;k++)
     {
     
     cout<<tab[k]<<endl;
     }
       return 0;
    }
    Merci pour votre aide;


    balises [code] ajoutées par r0d. Merci d'y penser.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Plusieurs remarques :

    Utiliser la balise code, c'est prévu pour et penser à l'indentation, c'est plus facile à lire.

    il faut doubler les caractères \
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifstream data("D:\SignauxTexte\sig.txt",ios::in); // on ouvre le fichier en lecture
    Je pense qu'il manque les parentheses d'appel à la fonction
    En règle générale, il sufit de monter le niveau de warning du compilateur afin de détecter ces erreurs.

    Est ce qu'il est possible d'avoir quelques lignes de ton fichier sig.txt ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par défaut
    ok;
    voici une partie du fichier que je souhaite lire;
    A bientôt;
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ton code marche presque :
    Il faut doubler les backslashes en C et C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    remplacer
    ifstream data("D:\SignauxTexte\sig.txt",ios::in);
    par
    ifstream data("D:\\SignauxTexte\\sig.txt",ios::in);
    Le test que tu fais est mauvais, tu fais "lire tant que le fichier est ouvert", il faut faire "lire tant que pas fin de fichier".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    remplacer
    while(data.is_open)
    par
    while(data.eof() == false)
    Une dernière info, mon compilateur me crie dessus avec la boucle for d'affichage en fin. Tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int n = tab.size();
     for (int k=0; k<n;k++)
    ...
    Je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     for (size_t k=0; k<tab.size();k++)
    ...
    et j'économise une variable au passage (mais c'est pas le plus important).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    Citation Envoyé par ram_0000 Voir le message
    Il faut doubler les backslashes en C et C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    remplacer
    ifstream data("D:\SignauxTexte\sig.txt",ios::in);
    par
    ifstream data("D:\\SignauxTexte\\sig.txt",ios::in);
    Ou utiliser des simples slash.

    Citation Envoyé par ram_0000 Voir le message
    Le test que tu fais est mauvais, tu fais "lire tant que le fichier est ouvert", il faut faire "lire tant que pas fin de fichier".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    remplacer
    while(data.is_open)
    par
    while(data.eof() == false)
    Non, cette condition de fin de boucle n'est pas bonne -> FAQ.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Non, cette condition de fin de boucle n'est pas bonne -> FAQ.
    Sir, Yes Sir !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    while(true)
    {
       data >> x;
     
       // test si fin de fichier atteinte
       if(data.eof() == true)
          break;
     
       // ajout de la donnée
       tab.push_back(x);
       cout<<x<<endl;
       i++; //on compte le nombre de lignes
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par défaut
    Merci beaucoup;
    ça marche;
    Bonne fin d'après midi;

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    Toujours pas bon. Oublie eof. Teste dans le while.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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

Discussions similaires

  1. [debutant] lecture de fichier (encore)
    Par SPACHFR dans le forum Débuter
    Réponses: 20
    Dernier message: 24/05/2007, 17h43
  2. [debutant] lecture de fichier
    Par SPACHFR dans le forum Débuter
    Réponses: 3
    Dernier message: 23/05/2007, 17h50
  3. [debutant] lecture de fichier
    Par cladsam dans le forum Caml
    Réponses: 10
    Dernier message: 06/05/2007, 17h44
  4. Réponses: 28
    Dernier message: 22/05/2006, 16h25
  5. PL/SQL lecture/ecriture fichier txt
    Par stos dans le forum PL/SQL
    Réponses: 2
    Dernier message: 19/05/2006, 12h19

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