Как очистить все содержимое файла в C? - PullRequest
20 голосов
/ 27 января 2011

У меня есть файл с некоторыми данными user1.Я хочу использовать тот же файл для user2, очистив содержимое файла.

Моя идея состоит в том, что когда приходит новый пользователь, данные предыдущего пользователя должны быть чистыми, и тот же файл должен быть готов дляновый пользователь.

Ответы [ 4 ]

36 голосов
/ 27 января 2011

Как сказал @stefan, использование fopen() в режиме "w" сделает всю работу за вас. Когда вы открываете файл с флагом «w», он создает пустой файл для записи. Если файл с таким именем уже существует, его содержимое удаляется, и файл обрабатывается как новый пустой файл.

Если файл уже открыт, вы можете использовать функцию freopen() из stdio.h с режимом "w", так как он сначала закроет файл, а затем снова откроет его для записи и удаления того, что было в файле ранее.

14 голосов
/ 27 января 2011

с fopen(filename, flag) просто откройте его с флагом = "w" или "wb", и оно будет очищено

10 голосов
/ 13 октября 2014
fclose(fopen("file.txt", "w"));

Почему это работает:

write: Создать пустой файл для операций вывода. Если файл с таким именем уже существует, его содержимое отбрасывается, и файл обрабатывается как новый пустой файл .

(цитата из http://www.cplusplus.com/reference/cstdio/fopen/)

3 голосов
/ 24 июня 2013

Есть два способа:

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");   
...