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 :

écraser une ligne dans un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 57
    Par défaut écraser une ligne dans un fichier
    Ma question peut paraitre très très bête mais ça fait maintenant une paire d'heures que j'essaie de la résoudre, et je n'y arrive pas

    Au départ j'ai un fichier du style

    Client1 1300 TCP
    Client2 1500 UDP
    Client3 1234 TCP
    Comment dois je m'y prendre pour remplacer
    Client2 1500 UDP par Client2 1600 TCP par exemple

    Donc au final le fichier sera
    Client1 1300 TCP
    Client2 1600 TCP
    Client3 1234 TCP

    qui peux aider un pauvre programmeur ?

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Le plus simple serait d'ouvrir un autre fichier en lecture et de recopier le fichier original tant que tu n'a pas trouvé la chaine à modifier.
    Une fois que tu as trouvé la chaine tu l'a modifie et tu l'ecris dans l'autre fichier, puis tu ecris tout le reste.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 57
    Par défaut
    en effet, c'est une solution, je copie dans un fichier TEMPO, mais une fois le programme terminé il faut recopier TEMPO dans le fichier d'origine.
    ==> n'est ce pas lourd ??? on utilise beaucoup de temps machine. Imagine un fichier de plus de 1000enregistrements.

    il n'y a pas autre chose de plus rapide ?

  4. #4
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Tu ne copies pas, tu renommes et supprimes.
    Y'a pas d'autres solution pour ajouter du texte dans un fichier en C.
    Sauf dans le cas où t'ajoutes exactement le même nombre d'octets, ce qui est le cas dans ton exemple mais si tu décides d'utiliser un port avec plus de chiffres (ou moins), faut passer par un fichier temporaire.

    Nas'

  5. #5
    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 grand_duck
    en effet, c'est une solution, je copie dans un fichier TEMPO, mais une fois le programme terminé il faut recopier TEMPO dans le fichier d'origine.
    Pourquoi faire ?

    rename()
    remove()...
    ==> n'est ce pas lourd ??? on utilise beaucoup de temps machine. Imagine un fichier de plus de 1000enregistrements.
    Pas de problèmes. En plus, on garde une trace de la version n-1, ce qui permet de revenir en arrière en cas d'erreur...
    il n'y a pas autre chose de plus rapide ?
    Si il s'agit de replacer des bytes par d'autres sans modifier la taille du fichier (pas question de faire la moindre insersion), on peut tenter une manip de la mort avec "r+" (ou "w+", lire la doc de fopen()), fseek() etc. Faut pas se louper, sinon, c'est le "fichier de plus de 1000enregistrements" qui part à la poubelle sans sauvegarde...

  6. #6
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 57
    Par défaut
    excellent, je viens de le faire et c'est tout a fait le resultat que j'attendais

    Merci a vous tous !!!!

  7. #7
    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 Nasky
    Sauf dans le cas où t'ajoutes exactement le même nombre d'octets
    Dans ce cas, on ne dit pas 'ajouter', mais 'remplacer'.

  8. #8
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Dans ce cas, on ne dit pas 'ajouter', mais 'remplacer'.
    Exact

    Nas'

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par Nasky
    Tu ne copies pas, tu renommes et supprimes.
    Y'a pas d'autres solution pour ajouter du texte dans un fichier en C.
    Sauf dans le cas où t'ajoutes exactement le même nombre d'octets, ce qui est le cas dans ton exemple mais si tu décides d'utiliser un port avec plus de chiffres (ou moins), faut passer par un fichier temporaire.

    Nas'
    Quand tu as moins de caractères, tu peux toujours ajouter des espaces pour combler, mais c'est de la très haute voltige sans filet, pas vraiment conseillé
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

Discussions similaires

  1. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  2. Changer une ligne dans un fichier
    Par peuf23 dans le forum Langage
    Réponses: 9
    Dernier message: 03/08/2005, 16h43
  3. [VBA] insérer une ligne dans un fichier excel
    Par cokinoumasterflash dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2005, 18h52
  4. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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