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 :

Remplacement d'occurences dans un fichier


Sujet :

C

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut Remplacement d'occurences dans un fichier
    Bonjour. Je voudrai savoir comment remplacer une ligne que l'on vient de capturer avec fgets dans un fichier, car le pointeur de flux s'est déplacé jusqu'à la fin de la ligne à remplacer.

    Merci si vous me dites une méthode possible. peut être prendre la longueur de la chaîne avec strlen et replacer le pointeur de flux en arrière, puis écraser tout ce qui vient après le pointeur de flux ?

  2. #2
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    encore plus simple.

    tu sauvegarde la position courante;
    tu lis ta ligne//chaine;
    tu regarde ce que tu viens de lire:
    occurence trouvé: on restaure la position sauvegardée et on traite;
    occurence pas trouvé: on continue;

    regarde du coté de fsetpos//fgetpos et strstr
    tu devrais y trouver ton bonheur
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    Bonjour désolé. Finalement j'ai utilisé un fichier intermédiaire et je ne vais pas utiliser le remplacement de ligne dans un fichier.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ben tant pis pour toi..

    Très facile avec fseek/ftell...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    Merci pour vos réponses.
    Je me suis rendu compte que c'était certainement trop difficile, car si la chaîne de remplacement dépasse, on écrase la suite du fichier sans faire un remplacement de ligne à strictement parler. Il faudrait voir ça sur les mode d'ouverture des fichiers, mais c'est un peu trop périlleux je trouvais, je préfère utiliser un fichier intermédiaire et y recopier ce que je veux.

    Merci beaucoup tout de même.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kromartien
    Bonjour désolé. Finalement j'ai utilisé un fichier intermédiaire et je ne vais pas utiliser le remplacement de ligne dans un fichier.
    C'est la meilleure solution.
    • simple
    • solide
    • réversible
    Pas de Wi-Fi à la maison : CPL

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par souviron34
    ben tant pis pour toi..

    Très facile avec fseek/ftell...
    Pas facile du tout (on ne sait ni supprimer, ni insérer, uniquement recouvrir exactement).

    Les ouvertures en [wra]+ se traduisent souvent par une destruction pure et simple du fichier, particulièrement en phase de mise au point. Dommage...
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    bah avec un fichier texte si assez simple... En binaire je dis pas.. Mais bon c'est vrai que par défaut c'est plus sûr de faire un fichier intermédiaire..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    J'imagine bien ce que pourrait être "insérer dans un fichier" : lire depuis le pointeur courant jusu'à la fin du fichier avec fgetc, puis décaler l'énorme buffer (il peut être très gros facilement) vers la droite en insérant tant d'espaces (avec un strcat sur une chaîne pleine d'espaces), puis le recopier à la suite du pointeur de fichier à sa valeur antérieure, puis réécrire par dessus, ouf, c'est risqué, lourd et difficile je trouve.

    C'est pour ça, autant écrire directement les lignes intéressantes dans un nouveau fichier, et ouvrir les deux autres en lecture seule, en plus ça évite de détruire les données comme vous le disiez plus haut.

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

Discussions similaires

  1. Programme de remplacement de texte dans des fichiers
    Par Invité4 dans le forum Linux
    Réponses: 13
    Dernier message: 12/11/2006, 16h06
  2. REmplacer la deuxième occurence dans un fichier
    Par EDrequest dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2006, 21h34
  3. [langage] Remplacer du texte dans un fichier
    Par Michaël dans le forum Langage
    Réponses: 9
    Dernier message: 11/03/2005, 15h19
  4. Réponses: 5
    Dernier message: 25/01/2005, 14h26
  5. remplacer un caractere dans un fichier
    Par ickis dans le forum C
    Réponses: 11
    Dernier message: 13/10/2003, 09h29

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