next up previous contents
Next: 8 デバッグのあれこれ Up: 実験に役立つテクニック集    V1.2 Previous: 6 C プログラムにおけるファイルへの入出力

7 C プログラムに引数を渡す方法

普段、
oyabun% mule myprog.c
oyabun% cc -o myprog myprog.c -lglscd -lX11 -lm

のようなコマンドを入力しているが、nemacs に対する myprog.c, cc に対する-o, myprog, myprog.c, -lglscd, -lX11, -lm のように、プログラムに渡す情報 のことをコマンド・ライン引数 (command line argument) と呼ぶことがある。

これをどう実現するか、例で示す。

sample-argc.c
#include <stdio.h>

main(argc, argv)
int argc;
char **argv;
{
    int i;
    for (i = 0; i < argc; i++)
        printf("argv[%d]=%s\n", i, argv[i]);
}

oyabun% ./sample-arg 1 two "three san 3"
argv[0]=./sample-arg
argv[1]=1
argv[2]=two
argv[3]=three san 3
oyabun% 

例えば、次のプログラムは、引数がなければ標準入力から、引数があればそ れをファイル名としてそこから、2 数を読み出して、和を計算するプログラム である。
sample-arg2.c
#include <stdio.h>

main(argc, argv)
int argc;
char **argv;
{
    int a, b;
    FILE *in;

    if (argc == 2)
        in = fopen(argv[1], "r");
    else
        in = stdin;
    fscanf(in, "%d %d", &a, &b);
    printf("%d\n", a + b);
}

oyabun% sample-arg2
2 3
5
oyabun% echo 3 4>in
oyabun% sample-arg2 in
7
oyabun% 


next up previous contents
Next: 8 デバッグのあれこれ Up: 実験に役立つテクニック集    V1.2 Previous: 6 C プログラムにおけるファイルへの入出力
桂田 祐史
2014-05-27