はじめての C

[Learning GNU C]

第13章 コマンドラインに 引数を とる

13.1. C では コマンドラインの 引数を どう 扱うか?

プログラムは OS が main() 関数プログラムを 呼び出すことから 始める。 今までは それぞれの プログラムで main() を 引数を とらない 関数として 定義したが どんな場合も そうとは 限らない。 main() は C の中で 唯一 2つの やり方で 定義することが できる。 それは 引数を もたないか 2個 または 3個の 引数を とることが できる。 引数 3個の 形式は 特に 役に たたないし 決して 必要とは されない。 これは この章の 終わりで 短く 補おう。

引数 2個の 形式では 1つの int 型と 1つの 文字配列を とる。 main() で 定義するとき これらの 引数に どんな 名を つけてもいいが 習わしとして "argc" "argv[]" と 書く。 1つ目の 引数は 2つ目の 引数で 渡された 文字配列の 要素が どれだけ そこに あるかを 数えて 保持する。 配列は 常に null で 終わるため argv[argc] == NULL となる。

これが 使い方を 示す 短い プログラムだ、

Example 13-1. list_args.c

#include <stdio.h>

int
main(int argc, char *argv[])
{
int i;

for (i = 0; i < argc; i++)
printf("arg[%d] == %s\n", i, argv[i]);

return 0;
}

main() には 2つの 引数 つまり "int" と "*char[]" (文字配列) が 渡される。 int は 普通 "argc" と 呼ばれ その名前から わかるように "argument count" の 略だ。 それは main() に 渡される 引数の 数を 保持する。 2つ目の 引数は 普通 "argv" と 呼ばれ 文字列の 配列だ。

13-2. argp

コマンドラインで 引数を とる C の 方式は とても 簡単だが プログラムが 多くの オプションを もつときは それを 複雑にすることが できる。 これを 解決するため glibc では コマンドの タスクを 実行する 一連の 関数を 用意している。 "argp_*" 関数は 多くの 仕事を 実行し ユーザに より 親しみやすくする 標準的な やり方で それを 行なう。 これが argp を 使った 短い プログラムだ、

    /* ここへ 小さな argp の プログラムを 置く */

このプログラムを 実行し 確かめる ...