今回は、キーボードからファイル名を読み込んで、そのファイル名の中身を消去するプログラムをご紹介する。
//任意のファイルの中身を消去
#include <stdio.h>
int ferase(const char *filename)
{
FILE *fp;
if((fp = fopen(filename,"w")) == NULL)
return 0;
fclose(fp);
return 1;
}
int main(void) {
FILE *fp;
char fname[256];
printf("中身を消去するファイル名:");
scanf("%s",fname);
if(ferase(fname))
printf("そのファイルの中身を消去しました。\n");
else
printf("そのファイルの中身を消去できませんでした。\n");
return 0;
}
実行結果
cat abc.txt
Never to suffer would never to have been blessed.
中身を消去するファイル名:abc.txt
そのファイルの中身を消去しました。
cat abc.txt
ファイルの中身を消去するのは、ferase関数である。ファイルを書き込みモード”w”でオープンすると、そのファイルの中身がすべて消去されることを利用している。
なお、消去されるのは、中身であって、ファイル自体ではない。
FILE型
<stdio.h>ヘッダで定義されているFILE型は、ストリームの制御に必要な情報を保存するための型であり、次のデータが含まれている。
ファイル位置表示子(file position indicator)
現在アクセスしているアドレスを記録する。
エラー表示子(error indicator)
読み取りエラーまたは書き込みエラーが起こったかどうか記録する。
ファイル終了表示子(end-of-file indicator)
ファイルの終わりに達したかどうかを記録する。
(参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著)、 由梨かおる(著)
コメント