網絡学習管理 速習C言語入門3 C exercises(c) Command line arg.

C exercises(c) Command line arg.

今まで、main 関数へ引数なしを意味する

int main(void) と記述、

実は main関数にも引数を渡すことができます。 この main関数に渡す引数のことを「コマンドライン引数」といいます。

コマンドライン引数

main関数へ渡せる引数は、

  1. 引数の総個数
  2. 引数の文字列を指すポインタの配列

の 2つです。

一般に

  • int main(int argc, char *argv[]) と記述し、
  • int argc: 引数の総個数(プログラム名も含む)
  • char *argv[]: 引数の文字列を指すポインタの配列を表します。

とりあえず、下の例を見てみましょう。

(例)

#include <stdio.h>

int main(int argc,char *argv[])
{
	int i;
	
	printf("引数の総個数 = %d\n", argc);
	for (i = 0; i < argc; i++) {
		printf("%d番目の引数 = %s\n", i, argv[i]);
	}
	return 0;
}

例題は、command_line.c と保存して、コンパイルだけしてください。

dir コマンドで、command.exe ファイル生成されたと確認。

2016-07-04 (1)

実行結果

Ctrl-Qでコマンドプロンプトを起動、 下記のコマンドを入れてください。

> command_line Kitty on your lap

 

E:\chen\My Documents\C>command_line Kitty on your lap
引数の総個数 = 5
0番目の引数 = E:\chen\My Documents\C\command_line.exe
1番目の引数 = Kitty
2番目の引数 = on
3番目の引数 = your
4番目の引数 = lap

E:\chen\My Documents\C>

演習

演習1

教科書 P291
コマンドラインで数値を入力し、その合計値を求めるプログラムを作成してください。

プログラムソースファイルは、a8-5-1.c とする。

実行結果

> a8-5-1 10 15 22 45 9 66 71 4 37 82
合計は 361です

演習2

http://chenlab.net/2016/06/07/c-exercises8-pointer-summary/

 

を改造し、整数は配列ではなく、コマンドライン引数として引き渡し、引数を順に調べ、奇数の値のみ、別の大きさ10の整数型配列に代入しなさい。また、配列の中身と、何個格納したかを画面表示しなさい。

実行結果

> find_odd_number 10 15 22 45 9 66 71 4 37 82
実行結果

15
45
9
71
37
格納個数 = 5

 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Related Post

C exercises(9) Basics of FunctionC exercises(9) Basics of Function

関数の基本 C言語において関数を使うことには、以下のような利点があります。 関数化しておくとそれを1つのブラックボックスとして扱うことができます。 つまり、使用する側が知っておくべきことは、以下の通りです。 入力として、どのような引数を与えるか 出力として、関数がどんな値を返すのか 関数を使ったことによって、どんな副作用があるか 一度、関数として作成しておけば、後で何度でも再利用することができる 関数として各機能をまとめていくと、一般にプログラムが見やすく、デバッグの作業もしやすい 関数の呼び出し #include <stdio.h> void func();   //関数のプロトタイプ宣言 int main() { func();    //関数呼び出し printf(" ここがメイン関数内\n"); return 0; } void func()    //自作関数 { […]

C exercises(a) Return ValuesC exercises(a) Return Values

ある関数が別の関数を呼び出して、呼び出した関数に制御が戻って来た時に、関数によっては値が返ってくるものがあります。 関数から値を返すには、関数の戻り値の他に、ポインタを使って、関数から呼び出し側の領域を書き換えるも可能です。 値を関数戻り値で返す 関数の定義 戻り値の型 関数名(パラメータリスト) { 文 ... } 関数の戻り値で返す。 この方法では、常に1つの情報しか返すことが出来ません。 2つ以上の情報を返したい時などは不便です。 値を引数の配列に返す 配列の先頭要素のアドレスを引数にして、上位関数側と下位関数側で配列を共有し、見かけ上、複数のデータを返したようにします。 #include <stdio.h> void waru2(int *p); […]

C exercises(8) Pointer SummaryC exercises(8) Pointer Summary

ポインタのまとめ アドレス ポインタと使用手順 ポインタ配列 過去のページを参照 演習 ポインタを使ったプログラムをグループで作成する。 7-3-4-3(P245) 大きさ10の整数型配列を用意し、下図のように初期設定しなさい。 この配列を順に調べ、奇数の値のみ、別の大きさ10の整数型配列に代入しなさい。 また、配列の中身と、何個格納したかを画面表示しなさい。 実行結果 15 45 9 71 37 格納個数 = 5 […]