C言語のきほん「ファイルの処理(2)任意のファイルの中身を消去」

スポンサーリンク
C言語

今回は、キーボードからファイル名を読み込んで、そのファイル名の中身を消去するプログラムをご紹介する。

//任意のファイルの中身を消去

#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版  柴田望洋 (監修・著)、 由梨かおる(著)

コメント

タイトルとURLをコピーしました