Cmt lire la n-ieme ligne d'un fichier texte

Résolu
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010 - 11 juil. 2008 à 13:01
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010 - 11 juil. 2008 à 14:08
salut,
je veux savoir comment je peux lire la n-ieme ligne d'un fichier texte en c++

maximus

11 réponses

Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
11 juil. 2008 à 14:00
et si tu avais pas remarqué c'est une partie du code que tu as mis a laquelle j'ai juste rajouté un if et une variable, par contre j'ai oublié le i++; avant de sortir du while. Donc au final :

#include <string>
#include <fstream>
#include
#include <string.h>
#include <fstream.h>
#include
 
 
int main()
{
    int n =  3; // si on veut recuperer la 3 eme ligne
    int i = 0;

    // le constructeur de ifstream permet d'ouvrir un fichier en lecture
    std::ifstream fichier("strtok esséye.txt");
 
    if( fichier )// ce test échoue si le fichier n'est pas ouvert
    {
        std::string ligne; // variable contenant chaque ligne lue
 
        // cette boucle s'arrête dès qu'une erreur de lecture survien
while( std::getline( fichier, ligne ))
        {
            if(i == n )
            {
                   // afficher la ligne à l'écran
                   std::cout << ligne << std::endl;
            }
            i++;
        }
    }
}

~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
3
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
11 juil. 2008 à 13:16
Salut
Il suffit de compter n-1 fois le caractère '\n' et ton curseur sera bien placer pour lire la n ième ligne.

A+
Mon site internet : http://pistol.petesampras.free.fr
0
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
11 juil. 2008 à 13:18
et je doit procédé cmt !!

maximus
0
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
11 juil. 2008 à 13:33
Pour lire ton fichier, imaginons que tu aies fait f = fscanf("montexte.txt");

Alors il te suffit de faire :
int i = 0;
for (i=0; i<n-1;i++)
{
f.Read();
}
maligne = f;

ainsi tu recupereras la ligne que tu veux lire dans ta variable maligne.

PS : je t'ai donné la maniere de le faire, pas le code exact, je ne suis absolument pas sûr d'avoir respecté le prototype de la fonction fscanf.

~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
11 juil. 2008 à 13:44
voila le code que j'ai mais ça lis tous le fichier, si quelq'un peux le modifier pr que je puisse recupuré la n-iém ligne de mon fichier txt

#include <string>
#include <fstream>
#include
#include <string.h>
#include <fstream.h>
#include
 
 
int main()
{
 

    // le constructeur de ifstream permet d'ouvrir un fichier en lecture
    std::ifstream fichier("strtok esséye.txt");
 
    if( fichier )// ce test échoue si le fichier n'est pas ouvert
    {
        std::string ligne; // variable contenant chaque ligne lue
 
        // cette boucle s'arrête dès qu'une erreur de lecture survient
        while( std::getline( fichier, ligne ))
 
 
 
 
        {
            // afficher la ligne à l'écran
            std::cout << ligne << std::endl;
        }
    }
}

maximus
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
11 juil. 2008 à 13:45
Ben tu ouvres ton fichier avec fopen
si fopen réussit: tu lis par bloc ton fichier que tu places dans ton buffer.
Puis tu parcours ton buffer à la recherche des \n

Pour plus d'info sur les fonctions fopen, fread et autre:
http://www.cplusplus.com/reference/clibrary/cstdio/ 

A+
Mon site internet : http://pistol.petesampras.free.fr
0
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
11 juil. 2008 à 13:46
int i = 0;

while
( std::getline( fichier, ligne ))
        {

            if(i == n )

            {

                   // afficher la ligne à l'écran

                   std::cout << ligne << std::endl;

            }

        }
~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
0
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
11 juil. 2008 à 13:56
merçi pour votre aide mais

int i = 0;
while
( std::getline( fichier, ligne ))
        {
            if(i == n )
            {
                   // afficher la ligne à l'écran
                   std::cout << ligne << std::endl;
            }
        }

ça marche pa comme code !!

maximus
0
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
11 juil. 2008 à 13:58
ben normal, faut quand meme que tu remplaces le n dans mon if par le numero de ligne que tu veux recuperer ... (reflexion is your friend )

~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
0
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
11 juil. 2008 à 14:00
oui je lé deja fais, mais il ne m'affiche rien !!

maximus
0
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
11 juil. 2008 à 14:08
merçi pour votre aide
ça fonction a merveille

maximus
0
Rejoignez-nous