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 :

Entrée sortie fichiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut Entrée sortie fichiers
    Bonjour,
    je crois voir comment récupérer la seconde ligne d'un fichier (on utilise fgetc tant qu'on n'a pas \n), mais comment récupérer la dernière, sans lire toutes les précédentes, puisqu'il s'agit d'un flux et qu'on ne peut donc utiliser un "fgetc qui partirait de la fin" ?

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    A priori, non.

    Il faut lire les lignes avec fgets et sauvegarder l'ancienne ligne lu jusqu'a obtention d'un "EOF". La dernière ligne est donc la ligne sauvegarder.

    Après, il y a peut être moyen de faire quelque chose avec FSEEK.
    Si tu connais le nombre de caractère séparant le début/la fin de ton fichier, avec FSEEK tu pourra te positionner a l'endroit voulu.

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Laissez-moi alors modifier légèrement ma question : dans un très très long fichier, fp pointe sur le milieu du fichier (une ligne quelconque). Je vois comment accéder à la ligne suivante (avec un fgetc), mais comment accéder à la précédente?

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Tu pourrai faire une boucle while.
    Tu recupere un caractere, si celui-ci est different de '\n', alors tu fais FSEEK et tu deplace le curseur de deux cran vers l'arriere (caractere lu + nouveau caractere).
    Et tu continue tant que tu n'as pas trouvé deux '\n', le premier etant celui de la ligne ou tu es, le deuxieme etant le '\n' juste avant la ligne que tu souhaite recuperer.

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Merci beaucoup, je vais réfléchir à votre idée et essayer de l'implémenter. Je reviendrai si j'ai des soucis.

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Un fichier ouvert en mode texte est vu comme un fichier organisé en lignes. Une ligne est une suite de caractères terminée par '\n'. Après avoir ouvert un fichier, il n'y a pas d'autre moyen d'aller à la ligne à part lire les n-1 lignes avant. Il est aussi possible de se positionner à une position sauvegardée par fgetpos à l'aide de la fonction fsetpos. Utiliser ftell/fseek sur un fichier ouvert en mode texte n'est pas portable. Voici un tutoriel pour en savoir plus : Manipulation des fichiers en C.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/04/2012, 21h30
  2. Réponses: 15
    Dernier message: 01/11/2008, 15h57
  3. Entrée / sortie dans un fichier binaire
    Par mejrs dans le forum Débuter
    Réponses: 1
    Dernier message: 24/05/2008, 16h48
  4. Réponses: 17
    Dernier message: 07/05/2008, 10h16
  5. Réponses: 11
    Dernier message: 13/10/2004, 00h58

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