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 :)
Version imprimable
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 :)
Pour supprimer un fichier, tu as unlink sous Unix, DeleteFile ou _unlink sous Windows.
Pour effacer le contenu, tu peux utiliser:
Code:
1
2 f = open(filename,O_WRONLY|O_TRUNC); if (f>=0) close(f);
je teste ca tout de suite :) merci
merci beaucoup :) ca marche tres bien
remove().Citation:
Envoyé par yvesall
Ou l'art de compliquer les choses simples. Qu'est-ce qui ne va pas avec remove() ?Citation:
Envoyé par josse95
Ou l'art de ne pas lire les questions ...Citation:
Emmanuel Delahaye a écrit:
Ou l'art de compliquer les choses simples. Qu'est-ce qui ne va pas avec remove() ?
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.
remove() est tout à fait standard. Peut importe comment elle est implémentée. unlink() n'est pas standard C.Citation:
Envoyé par josse95
pourquoi pas faire alors:
pour l'effacement du contenu%?Code:
1
2 if(f=fopen(filename,"w")) fclose(f);
[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 ?
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.Citation:
Envoyé par josse95
Donc il est preferable d'utiliser remove().
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).Citation:
Envoyé par josse95
Sinon quitte a utiliser des fonctions non standard, autant utiliser truncate : http://man.developpez.com/man2/truncate.2.php
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 !
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.
Oui, d'accord avec toi.
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)Citation:
Envoyé par josse95
http://emmanuel-delahaye.developpez.com/goret.htm
2 fonctions :Citation:
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 ?
http://www.developpez.net/forums/sho...61&postcount=9
Tant qu'on est dans le bestiaire:
http://www.developpez.net/forums/sho...62&postcount=4
Il existe une échelle aussi pour les ânes ?
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
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.Citation:
Envoyé par josse95
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) ?