Connaitre le nombre de ligne d'un fichier texte

sarah65536 Messages postés 5 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 24 juin 2007 - 28 mai 2007 à 17:24
sarah65536 Messages postés 5 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 24 juin 2007 - 24 juin 2007 à 22:15
Salut !

Voila, je voudrai savoir qu'elle fonction en C++ me permettrait de connaitre exactement le nombre de lignes que comporte un fichier texte.

Est-ce que quelqu'un pourrait m'indiquer quelle est cette fonction s'il vous plait ?
Merci

4 réponses

Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
28 mai 2007 à 17:34
Je ne sait pas si une telle fonction existe mais tu peut tjrs la faire toi meme:

long NbLignes(char* File)
{
    FILE* fp;
    long Lignes = 0;
    char c;    if ((fp fopen( File, "rb")) NULL)
    {
            return 0;
    }else
    {
            while( (c=getc(fp)) != EOF )
            {
                if(c == 10) Lignes++;
            }
            fclose(fp);
    }
    return Lignes;
}


Neo_Fr
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 mai 2007 à 20:17
Ne pas lire un fichier caractère par caractère. Essais ceci:

#include <fstream>
#include
using namespace std;
int main ()
{
    ifstream file("nomdufichier", ios::binary);
    char *buffer, *c;
    int size, linenum = 1;

    file.seekg(0, ios_base::end);
    size = file.tellg();
    file.seekg(0, ios_base::beg);

    buffer = new char[size+1];

    file.read(buffer, size);
    buffer[file.gcount()] = 0;
    c = buffer;

    while(*c) if(*c++ == '\n') ++linenum;

    cout << "Nombre de ligne: " << linenum << endl;

    delete[] buffer;
    file.close();

    return 0;
}

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 mai 2007 à 20:27
Le précédent était avec la STL. Voici maintenant une version API Win32:

#include <windows.h>
#include
using namespace std;

int main ()
{
    HANDLE hfile;
    char *buffer, *c;
    int size, linenum = 1;
    DWORD byte;

    hfile = CreateFile("nomdufichier", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);

    size = GetFileSize(hfile, 0);

    buffer = new char[size+1];

    ReadFile(hfile, buffer, size, &byte, 0);
    buffer[byte] = 0;
    c = buffer;

    while(*c) if(*c++ == '\n') ++linenum;

    cout << "Nombre de ligne: " << linenum << endl;

    delete[] buffer;
    CloseHandle(hfile);

    return 0;
}

Je tien à préciser qu'aucun de mes deux codes n'effectuent de tests de sécurités (test pour savoir si le fichier est bien ouvert par exemple). À toi de les rajouter si ça t'intéresse bien sûr.

C++ (@++)<!--
0
sarah65536 Messages postés 5 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 24 juin 2007
24 juin 2007 à 22:15




0