【C言語】コマンドライン引数で処理するファイルを指定する方法

この記事では、C言語でファイルを指定する方法について解説します。

目次から探す

ファイルを指定する方法

プログラムを実行する際に、処理するファイルを指定する方法にはいくつかの方法があります。

ファイル名を直接指定する方法

最も簡単な方法は、プログラムの実行時にファイル名を直接指定する方法です。

コマンドライン引数を使用して、プログラムにファイル名を渡すことができます。

#include <stdio.h>
int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("ファイル名を指定してください。\n");
        return 1;
    }
    char *filename = argv[1];
    FILE *file = fopen(filename, "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    // ファイルの処理を行う
    fclose(file);
    return 0;
}

上記の例では、argcはコマンドライン引数の数を表し、argvはコマンドライン引数の値を格納する配列です。

argv[0]にはプログラム名が格納されており、argv[1]以降には指定したファイル名が格納されます。

ファイルパスを指定する方法

ファイルが現在のディレクトリに存在しない場合や、別のディレクトリにあるファイルを指定する場合は、ファイルパスを指定する方法があります。

#include <stdio.h>
int main() {
    char *filepath = "path/to/file.txt";
    FILE *file = fopen(filepath, "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    // ファイルの処理を行う
    fclose(file);
    return 0;
}

上記の例では、filepathにファイルのパスを指定しています。

ファイルが存在しない場合は、fopen関数NULLを返します。

複数のファイルを指定する方法

複数のファイルを指定して処理する場合は、ファイル名やファイルパスを複数指定することができます。

以下は、複数のファイルを指定して処理する例です。

#include <stdio.h>
int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("ファイル名を指定してください。\n");
        return 1;
    }
    for (int i = 1; i < argc; i++) {
        char *filename = argv[i];
        FILE *file = fopen(filename, "r");
        if (file == NULL) {
            printf("ファイルを開けませんでした: %s\n", filename);
            continue;
        }
        // ファイルの処理を行う
        fclose(file);
    }
    return 0;
}

上記の例では、argcargvを使用して、複数のファイル名を指定しています。

forループを使用して、指定された全てのファイルを順番に処理しています。

以上が、C言語でコマンドライン引数を使用してファイルを指定する方法です。

ファイル名を直接指定する方法やファイルパスを指定する方法、さらに複数のファイルを指定する方法を理解し、自分のプログラムに適切な方法を選択してください。

目次から探す