web-dev-qa-db-ja.com

Cでファイルの内容全体をクリアするにはどうすればよいですか?

User1のデータの一部を含むファイルがあります。ファイルの内容を消去して、user2に同じファイルを使用したい。

私の考えは、新しいユーザーが来たとき、前のユーザーのデータはクリアされ、同じファイルが新しいユーザーに準備されるべきだということです。

20
mujahid

@stefanが言ったように、fopen()を "w"モードで使用すると、あなたのために仕事をするでしょう。 「w」フラグでファイルを開くと、書き込み用の空のファイルが作成されます。同じ名前のファイルが既に存在する場合、その内容は消去され、ファイルは空の新しいファイルとして扱われます。

ファイルがすでに開いている場合、stdio.hのfreopen() functionを「w」モードで使用すると、最初にファイルを閉じてから、以前にファイルにあったものを消去するために再度開くことができます。

38
binW

fopen(filename, flag)でflag = "w"または"wb"そしてそれはクリアされます

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

これが機能する理由:

write:出力操作用の空のファイルを作成します。 同じ名前のファイルが既に存在する場合、その内容は破棄され、ファイルは新しい空のファイルとして扱われます

http://www.cplusplus.com/reference/cstdio/fopen/ からの引用)

10
Edward Karak

2つの方法があります。

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