【C言語】コマンドライン引数の文字列を比較して処理を分岐させる方法

この記事では、C言語でコマンドライン引数を取得して処理を分岐させる方法について解説します。

目次から探す

コマンドライン引数の取得方法

コマンドライン引数とは、プログラムを実行する際にコマンドラインから渡されるパラメータのことです。

C言語では、main関数の引数としてargcargvを使用してコマンドライン引数を取得することができます。

argcとargvの概要

argcは、コマンドライン引数の数を表す整数型の変数です。

argvは、コマンドライン引数の値を表す文字列型の配列です。

argv[0]には、実行ファイルのパスが格納されます。

argv[1]以降には、コマンドライン引数が順番に格納されます。

以下は、argcargvの使用例です。

int main(int argc, char *argv[]) {
    // コマンドライン引数の数を表示
    printf("引数の数: %d\n", argc);
    // コマンドライン引数の値を表示
    for (int i = 0; i < argc; i++) {
        printf("引数%d: %s\n", i, argv[i]);
    }
    return 0;
}

上記のコードを実行すると、コマンドライン引数の数と値が表示されます。

サンプルコード

以下は、コマンドライン引数を取得して処理を行うサンプルコードです。

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
    // コマンドライン引数が2つ以上指定されているかチェック
    if (argc < 3) {
        printf("引数が足りません\n");
        return 1;
    }
    // コマンドライン引数の比較
    if (strcmp(argv[1], "hello") == 0) {
        printf("Hello, %s!\n", argv[2]);
    } else if (strcmp(argv[1], "goodbye") == 0) {
        printf("Goodbye, %s!\n", argv[2]);
    } else {
        printf("不明なコマンド: %s\n", argv[1]);
    }
    return 0;
}

上記のコードでは、コマンドライン引数が2つ以上指定されているかをチェックし、指定されたコマンドに応じてメッセージを表示しています。

strcmp関数を使用して、文字列の比較を行っています。

実践例

以下は、実際にコマンドライン引数を使用して処理を分岐させる実践例です。

コマンドラインで以下のように実行すると、異なるメッセージが表示されます。

$ ./program hello John
Hello, John!
$ ./program goodbye Emily
Goodbye, Emily!
$ ./program unknown Alice
不明なコマンド: unknown

以上がコマンドライン引数の文字列を比較して処理を分岐させる方法です。

コマンドライン引数を活用することで、プログラムの柔軟性を高めることができます。

目次から探す