C言語の基礎 |
5-3 main関数に引数を渡す
C言語で作成したプログラムを実行すると、まず関数mainから実行される。この関数mainに値を渡すこともできる。
作成したプログラムをtestとし、このtestの関数mainにAB, CD, 12のデータを渡したい場合、実行するときに次のようにする。
test AB CD 12
実行するプログラム名 プログラムに渡したいデータの並び
データが複数の場合はスペースまたはタブで区切る。コマンドラインに書いた文字列(test AB CD EF)が、次のように
メモリに格納され、関数mainに渡される。
数値も文字列としてメモリに格納される。関数mainには、これらの文字列の個数とそれぞれの文字列のアドレスが渡される。したがって関数mainでは次のようにデータを受け取るようにする。
main(int argc, char *argv[])
変数argcには4が格納される。argvには2次元配列として文字列が格納される。
argv[0] = 80 | argv[0][0] = 71 (t) | ||
argv[0][1] = 65 (e) | |||
argv[0][2] = 70 (s) | |||
argv[0][3] = 71 (t) | |||
argv[0][4] = 0 | |||
argv[1] = 85 | argv[1][0] = 41 (A) | ||
argv[1][1] = 42 (B) | |||
argv[1][2] = 0 | |||
argv[2] = 88 | argv[2][0] = 43 (C) | ||
argv[2][1] = 44 (D) | |||
argv[2][2] = 0 | |||
argv[3] = 8B | argv[3][0] = 31 (1) | ||
argv[3][1] = 32 (2) | |||
argv[3][2] = 0 |
コマンドラインを表示するプログラムを作成してみよう。
/* sample46.c */
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for(i = 0; i < argc; ++i)
printf("argv[%d]=%s\n", i, argv[i]);
}
コマンドラインの整数値の和を計算するプログラムを作成してみよう。
/* sample47.c */
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, wa = 0;
for(i = 0; i < argc; ++i)
wa = wa + atoi(argv[i]);
printf("WA=%d\n", wa);
}
Copyright © 2001 Hiroshi Masuda |