Как очистить все содержимое файла в C?

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

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

4 ответов


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

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


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


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

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

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

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


есть два пути:

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