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 :

effacer un fichier ou son contenu


Sujet :

C

  1. #1
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut effacer un fichier ou son contenu
    salut, j aimerais savoir si il est possible avec write ou open ou read (ou autre) d effacer un fichier, si ce n est pas possible, es ce possible d effacer juste son contenu ? merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Pour supprimer un fichier, tu as unlink sous Unix, DeleteFile ou _unlink sous Windows.

    Pour effacer le contenu, tu peux utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f = open(filename,O_WRONLY|O_TRUNC);
    if (f>=0) close(f);

  3. #3
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    je teste ca tout de suite merci

  4. #4
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    merci beaucoup ca marche tres bien

  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
    Citation Envoyé par yvesall
    salut, j aimerais savoir si il est possible avec write ou open ou read (ou autre) d effacer un fichier
    remove().

  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 josse95
    Pour supprimer un fichier, tu as unlink sous Unix, DeleteFile ou _unlink sous Windows.

    Pour effacer le contenu, tu peux utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f = open(filename,O_WRONLY|O_TRUNC);
    if (f>=0) close(f);
    Ou l'art de compliquer les choses simples. Qu'est-ce qui ne va pas avec remove() ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Emmanuel Delahaye a écrit:

    Ou l'art de compliquer les choses simples. Qu'est-ce qui ne va pas avec remove() ?
    Ou l'art de ne pas lire les questions ...
    Car yvesall demande aussi un moyen d'effacer le contenu (et non d'effacer le fichier), d'où l'exemple de code avec open.

    remove, que j'aurais pu citer aussi c'est vrai, est implémentée (sur certains compilateurs) comme une macro qui fait appel à unlink.

  8. #8
    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 josse95
    remove, que j'aurais pu citer aussi c'est vrai, est implémentée (sur certains compilateurs) comme une macro qui fait appel à unlink.
    remove() est tout à fait standard. Peut importe comment elle est implémentée. unlink() n'est pas standard C.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Points : 361
    Points
    361
    Par défaut
    pourquoi pas faire alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(f=fopen(filename,"w"))
    fclose(f);
    pour l'effacement du contenu%?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    [Pour Emmanuel]:

    C'est exact. Mais si c'est ce que tu reprochais à ma réponse, ton commentaire était mal adapté. Car je ne vois pas ce qu'il y a de compliqué à utiliser unlink plutôt que remove.

    Ta remarque portait vraisemblablement sur le code avec le open, mais alors je te pose la question: peux tu donner une fonction ANSI C qui efface le contenu d'un fichier ?

  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
    Citation Envoyé par josse95
    Car je ne vois pas ce qu'il y a de compliqué à utiliser unlink plutôt que remove.
    Ce n'est pas plus complique d'utiliser unlink que rmove. Mais remove est standard (et donc presente sur tous les compilateurs conformes) ce qui n'est pas le cas d'unlink.
    Donc il est preferable d'utiliser remove().

    Citation Envoyé par josse95
    peux tu donner une fonction ANSI C qui efface le contenu d'un fichier ?
    Ben le code de reptils le fait tres bien est en plus est standard (ce qui n'est pas le cas de l'utilistion de open et close).
    Sinon quitte a utiliser des fonctions non standard, autant utiliser truncate : http://man.developpez.com/man2/truncate.2.php

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    open et close ne sont pas "standards". Soit.

    Tout dépend du standard dont on parle. Ce n'est pas ANSI C, mais c'est disponible sur tous les compilateurs C Windows que je connais et c'est aussi POSIX:

    http://www.opengroup.org/onlinepubs/009695399/toc.htm

    Je ne veux pas lancer une polémique. Mais, qu'on me cite un seul compilateur C ou la fonction open(filename,O_WRONLY|O_TRUNC) n'est pas valide !

    Vouloir faire la chasse aux open, c'est un peu se faire des noeuds au cerveau !

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Utilisé en remplacement, ça passe, mais utilisé en création, non.
    Le troisième paramètre, celui qui donne les droits sur le nouveau fichier, n'a pas la même syntaxe sous POSIX et DOS ou Windows.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Oui, d'accord avec toi.

  15. #15
    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 josse95
    C'est exact. Mais si c'est ce que tu reprochais à ma réponse, ton commentaire était mal adapté. Car je ne vois pas ce qu'il y a de compliqué à utiliser unlink plutôt que remove.
    Et si je n'ai pas unlink() ? Pourquoi utiliser une fonction non standard quand une fonction standard existe (Force 5 sur l'Echelle de Goret)

    http://emmanuel-delahaye.developpez.com/goret.htm

    Ta remarque portait vraisemblablement sur le code avec le open, mais alors je te pose la question: peux tu donner une fonction ANSI C qui efface le contenu d'un fichier ?
    2 fonctions :

    http://www.developpez.net/forums/sho...61&postcount=9

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Tant qu'on est dans le bestiaire:

    http://www.developpez.net/forums/sho...62&postcount=4

    Il existe une échelle aussi pour les ânes ?

  17. #17
    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
    Citation Envoyé par josse95
    open et close ne sont pas "standards". Soit.

    Tout dépend du standard dont on parle. Ce n'est pas ANSI C, mais c'est disponible sur tous les compilateurs C Windows que je connais et c'est aussi POSIX:
    Ces deux fonctions sont effectivement tres courante, mais moins que les fonctions standard qui sont, par definition, presente sur tout compilateur conforme.

    Citation Envoyé par josse95
    Vouloir faire la chasse aux open, c'est un peu se faire des noeuds au cerveau !
    Je ne vois pas l'interet d'utiliser des fonctions non standard lorsque des fonctions standard existent pour realiser le meme traitement. Mais si elles sont courantes et donc tres portables, elles le sont necessairement moins que les fonctions standard.

    Pourquoi volontairement limiter la portabilite d'un source lorsqu'il n'y a pas de raison de le faire (il y a deja bien assez a faire avec ce qui ne peut pas etre realiser avec la seule norme) ?

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

Discussions similaires

  1. Effacer une balise et son contenu
    Par thomfort dans le forum Langage
    Réponses: 4
    Dernier message: 25/01/2011, 19h50
  2. Réponses: 4
    Dernier message: 22/09/2010, 17h21
  3. Effacer un répertoire et son contenu
    Par helkøwsky dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2010, 22h22
  4. Réponses: 2
    Dernier message: 19/10/2006, 09h43
  5. Réécrire un fichier en écrasant son contenu.
    Par psau dans le forum C++Builder
    Réponses: 1
    Dernier message: 06/01/2006, 23h40

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