コマンドライン引数を使うことで、プログラムの実行時に外部から値を渡すことができます。
この記事では、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言語におけるコマンドライン引数の文字列の扱い方です。