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 :

fichier texte, compter nbre de ligne


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bathou
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut fichier texte, compter nbre de ligne
    bonjour!
    j'aurais besoin d'un petit peu d'aide...
    j'aurais voulu savoir comment on compte le nombre de ligne dans un fichier texte : un fichier.txt par exemple...
    ouverture du fichier pas de souci c'est simplement que je ne sais pas quel fonction utiliser...
    merci par avance

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Si tu sais déjà ouvrir un fichier proprement avec fopen(), il n'y a pas de problème. Tu n'as pas besoin de fonction pour faire cela, ou alors tu peux très facilement programmer la tienne. Voici deux stratégies à appliquer une fois le fichier ouvert.

    Solution n°1:

    Tu lis le fichier ligne par ligne et tu incrémentes un compteur à chaque tour de boucle jusqu'à ce que soit atteinte la fin du fichier.

    Solution n°2:

    Tu lis le fichier caractère par caractère et tu incrémentes un compteur à chaque fois qu'un caractère de fin de ligne '\n' est rencontré.

    Une fois le travail terminé, n'oublie pas de refermer le fichier avec fclose().

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Membre confirmé Avatar de Bathou
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    donc pour ligne caractere par caractere, je prends la fonction fgetc et je met un if fgetc(fichier)="\n"{
    j'incrémente mon compteur}

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Bathou Voir le message
    donc pour ligne caractere par caractere, je prends la fonction fgetc et je met un if fgetc(fichier)="\n"
    Non ! '\n' et non "\n"... Un peu de bon sens. Il s'agit d'un caractère, pas d'une chaine. Et je rappelle que fgetc() retourne une int, et qu'on s'arrête de lire quand fgetc() retourne EOF...

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int c;
    int compteur = 0;
     
    while ((c = fgetc(mon_fichier_ouvert)) != EOF)
    {
        if (c == '\n')
        {
            compteur++;
        }
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Bathou Voir le message
    bonjour!
    j'aurais besoin d'un petit peu d'aide...
    j'aurais voulu savoir comment on compte le nombre de ligne dans un fichier texte : un fichier.txt par exemple...
    ouverture du fichier pas de souci c'est simplement que je ne sais pas quel fonction utiliser...
    merci par avance
    Tu parcours le fichier avec fgetc() et tu comptes les '\n'. Attention, parfois la dernière ligne n'est pas terminée par un '\n' (çaÿ mal, mais ça arrive).

  7. #7
    Membre confirmé Avatar de Bathou
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    mais euh autre question peut etre stupide mais par hasard, dans un fichier .txt le caractere de fin de ligne c'est pas autre chose que \n ??
    merci de vos réponses ^^

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Du point de vue du programmeur, si tu as ouvert ton fichier en mode texte, une fin de ligne est TOUJOURS représentée par le caractère '\n'! Sur certains systèmes, les fins de lignes sont représentées par le caractère '\r' (retour chariot) ou par la combinaison \n\r, mais la traduction est faite de manière transparente.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  9. #9
    Membre confirmé Avatar de Bathou
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    ok!! merci beaucoup, j'espère que je vais réussir à me débrouiller...
    a+

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/06/2011, 15h50
  2. compter nbre de lignes selon une date
    Par jonathanoudelet dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/10/2008, 11h59
  3. Comment écrire dans un fichier texte sans sauter les lignes
    Par gogéta91 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2008, 18h56
  4. [C#] Lecture d'un fichier texte sans terminaison de ligne
    Par heavydrinker dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/10/2006, 10h03
  5. Réponses: 2
    Dernier message: 05/12/2005, 15h57

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