文字列を扱う、最初のプログラムとして、コマンド引数を処理するプログラムを
考えてみましょう。
次のJava プログラムとCプログラムは、コマンド引数を 表示するという、ほとんど同じ働きをします。
class arg { public static void main(String argv[]){ for ( int i = 0; i < argv.length; i++ ){ System.out.println("argv[" + i + "] = " + argv[i] ); } } }
#include <stdio.h> void main(int argc , char *argv[]){ int i; for ( i = 1; i < argc ; i++ ){ printf("argv[%d] = %s\n" ,i,argv[i] ); } }
Java とCでのコンパイル・実行の例をあげてみました。 Java のコンパイルでは、どのような名前のクラス・ファイルが出来るかは、 ソース・ファイルの中を見ないと分かりません。また、Java のコンパイルが、 直接実行可能なファイルを生成するわけではなく、Java のプログラムを実行する 為には、Java という名前のインタープリタを起動する必要があることに注意して 下さい。また、引数の処理も、細かいところで違いがあります。
Javaでのコンパイル・実行
javac arg.java <--- コマンド javac でコンパイル。 java arg a b c <--- コマンド java で実行。 argv[0] = a <--- 以下、実行結果。 argv[1] = b argv[2] = c
Cでのコンパイル・実行
cc arg.c <--- コマンド cc でコンパイル。 a.out a b c <--- a.out を実行。 argv[1] = a <--- 以下、実行結果。 argv[2] = b argv[3] = c
さて、先の二つのプログラムを比較して、Java とCとでの、 引数の処理の違いを見てみましょう。