C++
 Computer >> コンピューター >  >> プログラミング >> C++

C/C++のremove()関数でファイルを削除する方法

C言語の標準ライブラリ関数 int remove(const char *filename) は、指定されたファイルを削除し、以後アクセスできないようにするための関数です。stdio.h ヘッダーに宣言されており、プログラムから直接ファイルシステム上のファイルを操作できます。

remove()関数の宣言

int remove(const char *filename)

パラメータ

filename:削除対象となるファイルの名前を格納したC文字列(ヌル終端文字列)です。相対パスまたは絶対パスのどちらでも指定できます。

戻り値

  • 成功した場合:0 を返します。
  • 失敗した場合:-1 を返し、グローバル変数 errno に適切なエラーコードが設定されます。

使用例

以下は、remove() 関数を使用してファイルを削除するサンプルプログラムです。

#include <stdio.h>
#include <string.h>

int main () {
    int ret;
    FILE *fp;
    char filename[] = "file.txt";

    /* ファイルを作成して書き込む */
    fp = fopen(filename, "w");
    fprintf(fp, "%s", "This is tutorialspoint.com");
    fclose(fp);

    /* ファイルを削除する */
    ret = remove(filename);

    if(ret == 0) {
        printf("File deleted successfully");
    } else {
        printf("Error: unable to delete the file");
    }

    return(0);
}

プログラムの解説

このプログラムでは、まず「file.txt」というテキストファイルを作成し、文字列を書き込んだ後に fclose() でファイルを閉じています。その後、remove() 関数にファイル名を渡して削除処理を実行します。

戻り値が 0 の場合は削除が成功したことを意味するため、「File deleted successfully」というメッセージが表示されます。それ以外の場合は、削除に失敗したことを示すエラーメッセージが出力されます。削除に失敗する主な原因としては、ファイルが存在しない、他のプロセスがファイルを使用中である、書き込み権限がない、などが挙げられます。

実行結果

上記のプログラムをコンパイルして実行すると、次のようなメッセージが表示され、file.txt は永久に削除されます。

File deleted successfully

注意:remove() 関数で削除されたファイルはごみ箱には移動されず、元に戻すことができません。重要なファイルを扱う場合は、事前にバックアップを取ることをおすすめします。

  1. C/C++の三項演算子(条件演算子)の基本と使い方

    3つのオペランド(被演算子)を必要とする演算子は「三項演算子」と呼ばれます。C言語では ? : の記号で表され、「条件演算子」とも呼ばれています。三項演算子を使うと、コードの行数を削減でき、簡潔で読みやすいプログラムを書くことができます。三項演算子の構文式1 ? 式2 : 式3まず式1が評価され、その結果が真(非ゼロ)であれば式2が実行され、偽(ゼロ)であれば式3が実行されます。if-else文を1行で書けるため、簡単な条件分岐に便利です。C言語での三項演算子の例サンプルコード1#include <stdio.h> int main() { int a = -1;

  2. 【C++入門】配列を関数に渡す3つの方法をわかりやすく解説

    C++では、配列全体をそのまま関数の引数として渡すことはできません。しかし、インデックスを付けずに配列名を指定することで、配列へのポインタを渡すことができます。これは「配列名は先頭要素へのポインタに読み替えられる(配列の減衰)」というC++の仕組みによるものです。1次元配列を関数の引数として渡したい場合は、以下の3つのいずれかの方法で関数の仮引数を宣言します。どの方法でも、コンパイラに対して「整数型のポインタを受け取る」という情報が伝わるため、動作結果はすべて同じになります。配列を関数に渡す3つの宣言方法1. ポインタとして仮引数を宣言するvoid myFunction(int *param)