網絡学習管理 速習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(d) Scope and Storage classC exercises(d) Scope and Storage class

変数の通用範囲 自動変数のことを局所変数、外部変数のことをグローバル変数(大域変数)ともいいます。 変数のスコープの範囲を図で表してみます。 赤色で囲った部分がグローバル変数の有効範囲です。 青色で囲った部分がローカル変数の有効範囲です。 この図ではローカル変数の寿命を関数内と説明しましたが、正確にはブロック内です。 ブロックとは、{}で囲まれている範囲のことを指しています。 記憶クラス Cで扱う記憶領域は一般に、プログラム領域、静的領域、スタック領域、ヒープ領域の 4つに大別されます。 記憶クラスには、4つあり、自動、静的、外部、レジスタがあります。 記憶クラス 記憶領域 スコープ 記憶クラス指定子 自動変数 スタック { } の内側 […]

C exercises (4) math and utilityC exercises (4) math and utility

数学関数 数学的な計算が必要な場合に使用する命令セットです。引数と返りは全てdouble型になります。 主なもの: sin(x):角度x(ラジアン)のsinの値を返す cos(x):角度x(ラジアン)のcosの値を返す tan(x):角度x(ラジアン)のtanの値を返す pow(x,y):xのy乗の値を返す exp(x):指数関数eのx乗の値を返す log(x):xの自然対数の値を返す log10(x):xの常用対数の値を返す sqrt(x):xの平方根の値を返す ceil(x):小数第一位を切り捨てした値を返す floor(x):小数第一位を切り上げした値を返す round(x):小数第一位を四捨五入した値を返す サンプル: #include <stdio.h> #include <math.h> //math.hのインクルードを忘れずに […]

C exercises(6) Pointers and VariablesC exercises(6) Pointers and Variables

ポインタの仕組み:ポインタで変数を指す ポインタとは ポインタ (pointer)とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、それを参照するものである。有名な例としてはC/C++でのメモリアドレスを表すポインタが挙げられる。(ja.wikipedia.org) ポインタ=メモリアドレス 間接演算子 * と アドレス演算子 & ポインタの使用手順 宣言 アドレスの設定 使用 ポインタで変数 間接演算子を使って、ポインタが指すメモリの値を取得することを間接参照するといいます。 間接演算子を用いれば、アドレスを間接参照するだけではなく、ポインタが表すアドレスに値を間接代入することもできます。 #include <stdio.h> int main() { […]