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 :

Vider le contenu d'un fichier


Sujet :

C

  1. #1
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut Vider le contenu d'un fichier
    C'est une question debile mais impossible de vider le contenu d'un fichier.
    J'ai beau essayé de le bourrer de '\0' ou de EOF, fsize(voir faq : c le même code) me retourne tjs la meme valeur. En gros, quoi que je fasse la taille du fichier, la taille reste la meme.

    Je voudrais eviter les solutions suivantes : fermeture du fichier, destruction du fichier, creation fichier ou bien fermeture fichier, ouverture en mode w ou w+. Je suppose seulement pouvoir travailler sur une variable de type FILE.

    Si vous avez une idée,( j'ai comme l'impression que c'est stupide comme truc ).
    Systeme Netbsd (pour faire simple, on va dire system POSIX )
    Compilo gcc de 2.95 a 3.3

    ZUL

  2. #2
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Salut

    Heu...! Il ne suffirait pas de positionner le pointeur de fichier en début de fichier ? (fseek je crois).
    - Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
    - Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)

  3. #3
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Exact... fseek et écraser les données de ton fichier...

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    J'ai bien peur que tu n'ais pas le choix. Tu vas devoir fermer le fichier et l'ecraser avec un nouveau fichier de meme nom.

    Une idee hasardeuse me vient : se positionner au debut du fichier avec fseek() et mettre EOF. Mais cela veut dire que la fin du fichier sera qu debut, et non que le fichier sera vide.

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Lorsque tu ecris par dessus les donnees d'un fichier tu ne les supprimes pas du fichier, tu les remplaces juste. La seule solution pour effectivement vider le fichier est bien de l'ecraser (une ouverture en w suffit)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    Il me semblait avoir vu une question dont la contenu etait au fond presque identique:
    Je te conseille donc d'aller visiter ce lien , tu y trouveras ton bonheur:
    http://www.developpez.net/forums/viewtopic.php?t=105139

    Cela répond a la question Retailler un fichier, mais dans ton cas ton probleme revient a retailler un fichier a zéro .
    Allez a bientot
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    La méthode protable c'est d'écraser le fichier. Apres, sous Windows, tu as une fonction qui te permet de spécifier la fin d'un fichier.

  8. #8
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    Vais devoir me contenter de ca . Merci a tout le monde .

    ZUL

  9. #9
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Sinon, il y a aussi une fonction pour effacer le fichier mais c'est vrai que réecrire par dessus ou réouvrir en écriture est d'autant plus simple. Voici quand même la fonction pour les curieux :
    int remove (const char *filename); /*suppression d'un fichier filename*/
    REM : le fichier ne doit pas être ouvert.
    Renvoi : 0 en cas de succès, -1 en cas d'échec (permission refusée par ex).
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    Effectivement j'ai fait une recherche pour vérifier la véracité des derniers dires et voila ce que j'ai pu trouver:
    Syntaxe :
    #include <stdio.h>

    int remove(const char *nom);

    Description :
    La fonction remove supprime le fichier désigné. Elle retourne 0 si l'opération a réussi et une valeur non nulle si elle a échoué.

    Valeur retournée :
    Elles retournent 0 si l'opération a réussi et une valeur non nulle si elle a échoué.


    Exemple :
    #include <stdio.h>

    main() {
    char nf[80];

    printf("Fichier a effacer: "); gets(nf);
    if (remove(nf) == 0)
    printf("Effacement de %s\n", nf);
    else
    perror("remove");
    return 0;
    }
    A bientot et bravo a celui qui a véhiculé l'info!!
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

  11. #11
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Ne sachant pas trop dans quel sens tu emploie le terme effacer, j'apporte une petite precision : la fonction remove ne vide pas le fichier de son contenu mais supprimme le fichier.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par gl
    Ne sachant pas trop dans quel sens tu emploie le terme effacer, j'apporte une petite precision : la fonction remove ne vide pas le fichier de son contenu mais supprimme le fichier.
    C'est vrai, et a la relecture du premier message il veut seulement vider le contenu du fichier donc cela ne represente pas une solution. Mea Culpa, j'espere que cette fonction servira pour d'autres.
    A bientot
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

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

Discussions similaires

  1. Effacer le contenu d'un fichier (vider le fichier)
    Par komalex dans le forum Java ME
    Réponses: 0
    Dernier message: 06/02/2010, 17h43
  2. vider le contenu de fichier
    Par siempre dans le forum C
    Réponses: 6
    Dernier message: 24/08/2009, 16h30
  3. Vider le contenu d'un fichier
    Par toutounesan dans le forum C++
    Réponses: 4
    Dernier message: 17/09/2007, 17h24
  4. vider le contenu d un fichier .csv
    Par lerab51 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 24/05/2007, 09h05
  5. Réponses: 6
    Dernier message: 17/04/2007, 15h46

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