【C言語】コマンドライン引数の文字列の扱い方を解説

コマンドライン引数を使うことで、プログラムの実行時に外部から値を渡すことができます。

この記事では、C言語におけるコマンドライン引数の基本的な使い方と、文字列の取得方法や操作方法について解説します。

目次から探す

コマンドライン引数の基本的な使い方

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

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

main関数の引数の説明

C言語のプログラムでは、main関数は以下のように定義されます。

int main(int argc, char *argv[])

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

argcは常に1以上の値を持ち、最低でもプログラム名が含まれます。

コマンドライン引数の取得方法のサンプルコード

以下のサンプルコードでは、コマンドライン引数を取得して表示する例を示します。

#include <stdio.h>
int main(int argc, char *argv[]) {
    int i;
    printf("コマンドライン引数の数: %d\n", argc);
    for (i = 0; i < argc; i++) {
        printf("引数%d: %s\n", i, argv[i]);
    }
    return 0;
}

このプログラムをコンパイルし、実行すると、コマンドライン引数の数と各引数の値が表示されます。

例えば、以下のように実行すると、

$ ./program arg1 arg2 arg3

次のような結果が得られます。

コマンドライン引数の数: 4
引数0: ./program
引数1: arg1
引数2: arg2
引数3: arg3

コマンドライン引数の文字列の扱い方

コマンドライン引数として渡される値は、文字列として扱うこともできます。

ここでは、文字列の取得方法と注意点、さらに文字列の操作方法について解説します。

文字列の取得方法と注意点

コマンドライン引数として渡される文字列は、argv配列の要素として取得することができます。

ただし、注意点があります。

まず、argv配列の要素は文字列へのポインタであり、文字列そのものではありません。

そのため、文字列を直接操作する場合は、ポインタを介して操作する必要があります。

また、コマンドライン引数として渡される文字列は、プログラム実行時にスペースや特殊文字を含む場合もあります。

そのため、適切に文字列を取得するためには、クォーテーションで囲むか、エスケープ文字を使用する必要があります。

文字列の操作方法のサンプルコード

以下のサンプルコードでは、コマンドライン引数として渡された文字列を取得し、その長さと逆順の文字列を表示する例を示します。

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
    int i;
    for (i = 1; i < argc; i++) {
        char *arg = argv[i];
        int length = strlen(arg);
        int j;
        printf("引数%d: %s\n", i, arg);
        printf("長さ: %d\n", length);
        printf("逆順: ");
        for (j = length - 1; j >= 0; j--) {
            printf("%c", arg[j]);
        }
        printf("\n\n");
    }
    return 0;
}

このプログラムをコンパイルし、実行すると、コマンドライン引数として渡された文字列の長さと逆順の文字列が表示されます。

例えば、以下のように実行すると、

$ ./program Hello World!

次のような結果が得られます。

引数1: Hello
長さ: 5
逆順: olleH
引数2: World!
長さ: 6
逆順: !dlroW

以上が、C言語におけるコマンドライン引数の文字列の扱い方です。

目次から探す