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 :

Supprimer les derniers caracteres dans un fichier


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 67
    Points : 52
    Points
    52
    Par défaut Supprimer les derniers caracteres dans un fichier
    Bonjour,

    Pour un projet C que j'ai a faire, je dois supprimer tous les caracteres qui se trouvent a telle position avec la meilleure complexité qui existe (donc eviter la copie de fichier en enlevant les derniers caracteres...).

    Résumons j'ai un pointeur sur fichier :
    Je dois supprimer tous les caracteres du fichier qui se trouve a partir de mon pointeur "Fichier".

    Est ce que quelqu'un à une idée ......peut-être une fonction C existe deja mais je ne la connaît pas.


    Merci par avance de votre aide.

  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 : 47
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Si tu es sur un système POSIX, tu peux utiliser la fonction truncate() pour réduire la taille de ton fichier. Ainsi, pour supprimer une portion de ton fichier, tu te places au début de la portion à effacer avec fseek() ou autre, tu copies tout ce qui suit la portion à effacer, puis tu réduis la taille du fichier en appelant truncate().

    Thierry

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 67
    Points : 52
    Points
    52
    Par défaut
    Tout d'abord merci pour cette reponse en effet c'est ce genre de fonction qui pourrait m'interresser mais voila le but de mon projet et qu'il soit le plus portable possible.
    Pendant tout le developpement, et la ca commence a faire des lignes de codes, avec mon binome on s'est tenu a la norme ISO C90 avec les option de compilation suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -W -Wall -pedantic -ansi
    Est ce que la fonction truncate va poser probleme.....?? je sais pas trop ce qu'est un systeme POSIX.

    Merci d'avance pour votre reponse.

  4. #4
    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 : 47
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Pour réaliser ce que vous voulez faire en C90, il n'y a pas le choix. Il faut copier le contenu du fichier que vous voulez conserver dans un deuxième fichier. truncate() est POSIX.1, donc très portable (sur tous les systèmes unixoïde + windows avec MinGW (à confirmer)). Cette solution est la plus portable que je puisse envisager (en évitant la copie).

    Thierry

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 67
    Points : 52
    Points
    52
    Par défaut
    Merci de ta reponse Thierry,

    En fait j'ai resolu le probleme :
    Je me debrouille de savoir a l'avance ce que j'ai besoin d'ecrire dans le fichier ou pas...oui c'est propre a mon projet....et non une reponse generale mais en meme temps je me suis un peu renseigné et je n'ai pas trouvé mieux de ce que proposé Thierry, c'est lui qui m'a proposé la meilleure proposition d'effacement.

    Merci Thierry.

  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 barbsbou Voir le message
    je n'ai pas trouvé mieux de ce que proposé Thierry, c'est lui qui m'a proposé la meilleure proposition d'effacement.
    C'est effectivement la solution 'canonique'. Simple, efficace, portable.

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

Discussions similaires

  1. [LV2009] Supprimer les lignes vides dans un fichier texte
    Par Super2006 dans le forum LabVIEW
    Réponses: 3
    Dernier message: 11/11/2011, 14h32
  2. Supprimer le dernier caractere d'un fichier
    Par dabaton dans le forum Débuter
    Réponses: 3
    Dernier message: 03/01/2009, 11h12
  3. Supprimer les derniers caracteres avec comme delimiteur le \
    Par kenny49 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/05/2007, 11h10
  4. Supprimer les dernieres lignes et concatener plusieurs fichier
    Par filsdugrand dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/04/2006, 21h15
  5. Réponses: 17
    Dernier message: 12/04/2005, 15h28

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