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 :

Lire un fichier ligne par ligne et écrire à la fin


Sujet :

C

  1. #1
    Membre habitué Avatar de mailbox
    Profil pro
    Inscrit en
    Février 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 140
    Points : 159
    Points
    159
    Par défaut Lire un fichier ligne par ligne et écrire à la fin
    Bonsoir, alors j'ai une boucle de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char *resultat;
    fichier=fopen("test.txt", "a");
     
    while(fgets(ligne, 100, fichier) != NULL)
    {
          resultat=strstr(ligne, code);
     
          if (resultat == NULL)
              fputs(code, fichier);
    }
    fclose (fichier);
    Donc ce que je souhaite faire, c'est :
    1. Lire mon fichier ligne par ligne
    2. Rechercher un code dans chaque ligne avec strstr
    3. Si le code n'existe pas, l'ajouter à la fin du fichier

    Mais le mode "a" ne me permet que d'écrire à la fin du fichier, pas de le lire, est ce qu'il existe une sorte de mode "ar" ? Il y a le mode "r+" mais comment faire pour écrire à la fin?

    Mon fichier texte a cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ABCD
    AZER
    AFRT
    ASOP
    BLAB
    BOBB
    ...

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Tu peux utiliser les modes "r+" ou "a+".

    La différence entre ces deux modes est la position du curseur après ouverture du fichier.

    Après, il faut jouer avec les fonctions ftell et fseek qui permettent respectivement de savoir où est le curseur d'un fichier et de modifier ce curseur.

    Exemple :

    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
    char *resultat;
    fichier=fopen("test.txt", "r+");
     
    while(fgets(ligne, 100, fichier) != NULL)
    {
          resultat = strstr(ligne, code);
     
          if (resultat == NULL) {
              /* on récupère la valeur du curseur */
              long pos = ftell(ficheir);
              /* on va à la fin du fichier */
              fseek(fichier, 0, SEEK_END);
              /* on écrit*/
              fputs(code, fichier);
              /* on revient où on était */
              fseek(fichier, pos, SEEK_SET);
          }
    }
    fclose (fichier);
    Dernière modification par Invité(e) ; 01/03/2011 à 10h51. Motif: orthographe

  3. #3
    Membre habitué Avatar de mailbox
    Profil pro
    Inscrit en
    Février 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 140
    Points : 159
    Points
    159
    Par défaut
    Thx!

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/07/2014, 18h08
  2. lire une base de donnee ligne par ligne
    Par thildouille dans le forum Langage
    Réponses: 9
    Dernier message: 03/06/2011, 00h50
  3. lire fichier .txt (NOTEPAD) ligne par ligne
    Par skambram dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/06/2009, 18h41
  4. lire un fichier de string ligne par ligne
    Par bilzzbenzbilz dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 11/02/2009, 10h44
  5. Réponses: 3
    Dernier message: 16/10/2007, 20h45

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