1999年度のプログラミングIIIの授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は江上の授業ページで。 |
コマンドライン引数の取得 |
コマンドライン引数
>> コマンドライン引数目的
- ファイル操作等を行う実行プログラムを、ソースプログラムを書き換ずに再使用したい
- 1つのプログラムをオプション指定により動作を切替えて、幅広く汎用的に使用したい
- Unix 上のコマンドはどうやってパラメータを取得しているのか?
用語
- コマンド
- コンピュータに作業指示を与えるためのもので、通常は英数字列で表現される
- コマンドインタープリタ(シェル)
- コンピュータシステムの中で、ユーザからの指示(コマンド)を解釈・実行する部分
- MS-DOS には COMMAND.COM
- UNIX には sh, csh, bash 等々
- コマンドラインインターフェース
- GUIと対比され、命令の指示をキャラクタベースで行うユーザインターフェース
- コマンドライン(コマンド行)
- コマンドインタープリタにすべき文字列(命令+オプション)
- コマンドライン引数(コマンドラインパラメータ)
- コマンド(命令)の動作を変えるためのオプションや、処理対象を指定する
>> 例MS-DOSC:\>REN TEST.C PROGRAM.C
C:\>DEL TEST.BAKUnix
bash$ mv a.out test
bash$ cc test.c
bash$ cc test.c ↑
プロンプト↑
コマンド↑
パラメータ(コマンドライン引数)+−−−−−−−−−−−−−−−−−+
コマンドライン
>> C (と Unix)でのコマンドライン引数の操作
main( ) 関数にはこれまで引数が無かったが、コマンドライン引数の取得には
C言語の関数呼び出しの考え方を使用する。( return 文を用いて値を返す事も
できる )
↓
コマンドライン引数は main( ) 関数への引数の形で与えられる1つ目の引数 ... 引数の数 ... int 型
2つ目の引数 ... 引数本体(文字列) ... 文字列の配列☆ 伝統的にコマンドライン引数の変数には "argc", "argv" が使われる(ことがある)。
main ( int argc , char *argv[ ] ) ↑
引数の総数↑
引数本体(整数型) (ポインタのポインタ)
(ポインタ配列) argc = argument count
argv = argument vector
>> 例題プログラム>>>その1
#include <stdio.h> main( int argc, char *argv[] )
{
printf("引数は %d 個\n", argc );printf("0番目の引数 %s\n", argv[0] );
printf("1番目の引数 %s\n", argv[1] );
printf("2番目の引数 %s\n", argv[2] );
printf("3番目の引数 %s\n", argv[3] );
}
>>>その2
#include <stdio.h> main( int argc, char *argv[] )
{
int i;
printf("引数は %d 個\n", argc );for (i = 0; i < argc; i++)
printf("%d 番目の引数 %s\n", i, argv[0] );
}