web-dev-qa-db-fra.com

Comment effacer tout le contenu d'un fichier en C?

J'ai un fichier avec certaines des données de user1. Je veux utiliser le même fichier pour user2 en effaçant le contenu du fichier.

Mon idée est que lorsqu'un nouvel utilisateur arrive, les données de l'utilisateur précédent doivent être claires et le même fichier doit être prêt pour le nouvel utilisateur.

20
mujahid

Comme l'a dit @stefan, utiliser fopen() avec le mode "w" fera le travail pour vous. Lorsque vous ouvrez un fichier avec l'indicateur "w", il crée un fichier vide pour l'écriture. Si un fichier du même nom existe déjà, son contenu est effacé et le fichier est traité comme un nouveau fichier vide.

Si le fichier est déjà ouvert, vous pouvez utiliser la fonction freopen() de stdio.h avec le mode "w" car il fermera d'abord le fichier, puis le rouvrira pour écrire en effaçant tout ce qui était dans le fichier précédemment.

38
binW

avec fopen(filename, flag) il suffit de l'ouvrir avec flag = "w" ou "wb" et il sera effacé

15
stefan
fclose(fopen("file.txt", "w"));

Pourquoi cela fonctionne:

write: crée un fichier vide pour les opérations de sortie. Si un fichier du même nom existe déjà, son contenu est supprimé et le fichier est traité comme un nouveau fichier vide .

(citation de http://www.cplusplus.com/reference/cstdio/fopen/ )

10
Edward Karak

Il y a deux façons:

1. fd=open(filename,O_RDONLY | O_WRONLY | O_TRUNC);


2. [cat /dev/null > filename] for BASH. It can be directly used in c program using [system()] system call. 

   system("cat /dev/null > filename");   
3
garvitlnmiit