Download : sample-001.c ( utf8 版 )
/*
 * 2016/06/03 sample-001.c
 */
/*
 * コマンドライン引数
 */
#include <stdio.h>
/*
 * main 関数
 */
int main ( int argc, char *argv[] ) {	/* main 関数の引数が変化 */
	/*
		main 関数の引数は、どちらでも良い
		「引数を宣言」する事により、「利用が可能」になる
	*/
	/*
		このプログラムを実行する場合は
			./sample-001.c.exe abc
		の様に、コマンド引数を指定する必要がある
		コマンドラインを指定しなかったりすると、
		エラー (core dumped) になったりする。
	*/
	printf ( "一つ目のコマンドライン引数は「" );
	printf ( argv[1] );
	printf ( "」でした。\n" );
	return 0;
}
$ ./sample-001.exe abc 一つ目のコマンドライン引数は「abc」でした。 $
Download : sample-002.c ( utf8 版 )
/*
 * 2016/06/03 sample-002.c
 */
/*
 * コマンドライン引数 (2)
 */
#include <stdio.h>
/*
 * main 関数
 */
int main ( int argc, char *argv[] ) {	/* main 関数の引数が変化 */
	/*
		このプログラムを実行する場合は
			./sample-002.c.exe abc 123 zzzzz
		の様に、コマンド引数を 2 つ以上、指定する必要がある
	*/
	printf ( "プログラムファイル名は「" );
	printf ( argv[0] );					/* argv[0] はプログラムファイル名 */
	printf ( "」でした。\n" );
	printf ( "一つ目のコマンドライン引数は「" );
	printf ( argv[1] );
	printf ( "」でした。\n" );
	printf ( "二つ目のコマンドライン引数は「" );
	printf ( argv[2] );
	printf ( "」でした。\n" );
	return 0;
}
$ ./sample-002.exe abc 123 zzzz プログラムファイル名は「./sample-002.exe」でした。 一つ目のコマンドライン引数は「abc」でした。 二つ目のコマンドライン引数は「123」でした。 $
Download : sample-003.c ( utf8 版 )
/*
 * 2016/06/03 sample-003.c
 */
/*
 * 再起の利用
 */
#include <stdio.h>
/*
 * triangle ( N ) -- サイズ N の三角を作る
 */
void triangle ( char *N ) {
	if ( !strcmp ( N, "" ) ) {	/* サイズ 0 の時 */
		/* 何もしない */
	} else {					/* サイズが一般の N の時 */
		triangle ( N + 1 );		/* 文字列は 1 を加えると短かくなる */
								/* 再起呼び出し */
		printf ( N );			/* N を表示 */
		printf ( "\n" );		/* 改行 */
	}
}
/*
 * main 関数
 */
int main ( void ) {	/* main 関数の引数を利用しないので */
	triangle ( "***" );		/* サイズ 3 の三角 */
	printf ( "---\n" );		/* 仕切り */
	
	triangle ( "1234567" );		/* サイズ 7 の三角 */
	return 0;
}
$ ./sample-003.exe * ** *** --- 7 67 567 4567 34567 234567 1234567 $
/*
 * 2016/06/03 hanoi2.c
 */
#include <stdio.h>
/*
 *	亀プログラムには、s_hanoi.h が必要
 */
#include "s_hanoi.h"
/*
 * ハノイの塔 プログラム
 *
 */
int main ( void ) {
  /*
   * 最初は "1" に全ての円盤がおいてある
   */
	/*
	 * ハノイで、できること
	 *   s_hanoi_set ( char *discs ) : ハノイの塔の高さを設定する
	 *   s_hanoi_move ( char *from, char *to ) : from にある円盤を to に移す
	 *   s_hanoi_clear () : 最初の状態に戻す
	 *   s_hanoi_stop : ハノイプログラムの終了 : return 0 の前に呼び出す
	 */
	s_hanoi_init();
	s_hanoi_size ( "***" );	// 高さを 7 に設定
	putchar ( '>' );
	putchar ( getchar() );
/*
		1
		2
		3
	--------------------
	   (1)  (2)	 (3)
*/
	s_hanoi_move ( "1", "2" );	// ディスク 1 を 1 から 2 に移動
	s_hanoi_move ( "1", "3" );	// ディスク 2 を 1 から 3 に移動
/*
		3	 1	  2
	--------------------
	   (1)  (2)	 (3)
*/
	putchar ( '>' );
	putchar ( getchar() );
	s_hanoi_stop();
	return 0;
}
#include <stdio.h>
int main(void) {
	printf ( "1:" );
	putchar ( getchar() );	/* ???????????A??????o????? */
	printf ( "\n" );		/* ????????????A?o????A?v?????v?g?????
								?s?????????????A????? */
	return 0;
}
#include <stdio.h>
int main(void) {
	printf ( "1:" );
	putchar ( getchar() );	/* ???????????A??????o????? */
	printf ( "\n" );		/* ????????????A?o????A?v?????v?g?????
								?s?????????????A????? */
	getchar();				/* ??????A??s???????? */
	printf ( "2:" );
	putchar ( getchar() );	/* ???????????A??????o????? */
	printf ( "\n" );		/* ????????????A?o????A?v?????v?g?????
								?s?????????????A????? */
	getchar();				/* ??????A??s???????? */
	printf ( "3:" );
	putchar ( getchar() );	/* ???????????A??????o????? */
	printf ( "\n" );		/* ????????????A?o????A?v?????v?g?????
								?s?????????????A????? */
	getchar();				/* ??????A??s???????? */
	return 0;
}
#include <stdio.h>
int main(int argc, char *argv[]) {
	/*
		?R?}???h???C????w?????R?}???h???C????
		??????????Aargv ?o?R??A???p?????
		??F
			../p-004.exe
		????..
			../p-004.exe abc 123456
						argv[1] argv[2]
	*/
	printf ( argv[1] );		/* ?????R?}???h???C???? */
	printf ( "\n" );
	printf ( argv[2] );		/* ?????R?}???h???C???? */
	printf ( "\n" );
	/*
		????v???O???????A
			../p-004.exe abc 123456
		??????A
			abc
			123456
	*/
	return 0;
}
/*
 * 2016/06/03 p-005.c
 */
#include <stdio.h>
/*
 *	亀プログラムには、s_hanoi.h が必要
 */
#include "s_hanoi.h"
/*
 * ハノイの塔 プログラム
 *
 */
int main ( int argc, char *argv[] ) {
  /*
   * 最初は "1" に全ての円盤がおいてある
   */
	/*
	 * ハノイで、できること
	 *   s_hanoi_set ( char *discs ) : ハノイの塔の高さを設定する
	 *   s_hanoi_move ( char *from, char *to ) : from にある円盤を to に移す
	 *   s_hanoi_clear () : 最初の状態に戻す
	 *   s_hanoi_stop : ハノイプログラムの終了 : return 0 の前に呼び出す
	 */
	s_hanoi_init();
	s_hanoi_size ( argv[1] );	// 高さを 3 に設定
	putchar ( '>' );
	putchar ( getchar() );
/*
		1
		2
		3
	--------------------
	   (1)  (2)	 (3)
*/
	s_hanoi_move ( "1", "2" );	// ディスク 1 を 1 から 2 に移動
	s_hanoi_move ( "1", "3" );	// ディスク 2 を 1 から 3 に移動
/*
		3	 1	  2
	--------------------
	   (1)  (2)	 (3)
*/
	putchar ( '>' );
	putchar ( getchar() );
	s_hanoi_stop();
	return 0;
}
#include <stdio.h>
int main(int argc, char *argv[]) {
	/*
		?R?}???h???C????w?????R?}???h???C????
		??????????Aargv ?o?R??A???p?????
		??F
			../p-004.exe
		????..
			../p-004.exe abc 123456
						argv[1] argv[2]
				"abc"[1] -> 'b'
				"abc"[0] -> 'a'
	*/
	printf ( argv[0] );
	printf ( "\n" );
	printf ( argv[1] );		/* ?????R?}???h???C???? */
	printf ( "\n" );
	printf ( argv[2] );		/* ?????R?}???h???C???? */
	printf ( "\n" );
	/*
		????v???O???????A
			../p-004.exe abc 123456
		??????A
			abc
			123456
	*/
	return 0;
}
/*
 * 2016/06/03 p-005.c
 */
#include <stdio.h>
/*
 *	亀プログラムには、s_hanoi.h が必要
 */
#include "s_hanoi.h"
/*
 * ハノイの塔 プログラム
 *
 */
int main ( int argc, char *argv[] ) {
  /*
   * 最初は "1" に全ての円盤がおいてある
   */
	/*
	 * ハノイで、できること
	 *   s_hanoi_set ( char *discs ) : ハノイの塔の高さを設定する
	 *   s_hanoi_move ( char *from, char *to ) : from にある円盤を to に移す
	 *   s_hanoi_clear () : 最初の状態に戻す
	 *   s_hanoi_stop : ハノイプログラムの終了 : return 0 の前に呼び出す
	 */
	s_hanoi_init();
	s_hanoi_size ( argv[1] );	// 高さを 3 に設定
	putchar ( '>' );
	putchar ( getchar() );
/*
		1
		2
		3
	--------------------
	   (1)  (2)	 (3)
*/
	s_hanoi_move ( "1", "2" );	// ディスク 1 を 1 から 2 に移動
	s_hanoi_move ( "1", "3" );	// ディスク 2 を 1 から 3 に移動
/*
		3	 1	  2
	--------------------
	   (1)  (2)	 (3)
*/
	s_hanoi_move ( "2", "3" );	// ディスク 1 を 2 から 3 に移動
	/*
				  1
		3	 	  2
	--------------------
	   (1)  (2)	 (3)
	*/
	s_hanoi_move ( "1", "2" );	// ディスク 3 を 1 から 2 に移動
	/*
				  1
			 3	  2
	--------------------
	   (1)  (2)	 (3)
	*/
	s_hanoi_move ( "3", "1" );	// ディスク 1 を 3 から 1 に移動
	/*
		1	 3	  2
	--------------------
	   (1)  (2)	 (3)
	*/
	s_hanoi_move ( "3", "2" );	// ディスク 2 を 3 から 2 に移動
	/*
			 2
		1	 3
	--------------------
	   (1)  (2)	 (3)
	*/
	s_hanoi_move ( "1", "2" );	// ディスク 1 を 1 から 2 に移動
	/*
			 1
			 2
			 3
	--------------------
	   (1)  (2)	 (3)
	*/
	putchar ( '>' );
	putchar ( getchar() );
	s_hanoi_stop();
	return 0;
}
/*
 * 2016/06/03 p-005.c
 */
#include <stdio.h>
/*
 *	亀プログラムには、s_hanoi.h が必要
 */
#include "s_hanoi.h"
/*
 * ハノイの塔 プログラム
 *
 */
int main ( int argc, char *argv[] ) {
  /*
   * 最初は "1" に全ての円盤がおいてある
   */
	/*
	 * ハノイで、できること
	 *   s_hanoi_set ( char *discs ) : ハノイの塔の高さを設定する
	 *   s_hanoi_move ( char *from, char *to ) : from にある円盤を to に移す
	 *   s_hanoi_clear () : 最初の状態に戻す
	 *   s_hanoi_stop : ハノイプログラムの終了 : return 0 の前に呼び出す
	 */
	s_hanoi_init();
	s_hanoi_size ( argv[1] );	// 高さを 3 に設定
	putchar ( '>' );
	putchar ( getchar() );
/*
		1
		2
		3
	--------------------
	   (1)  (2)	 (3)
*/
	/* N = 1 -> 1 = H(1) */		
	/* N = 2 -> 3 = H(2) */		/* 3 - 1 = 2 */
	/* N = 3 -> 7 = H(3) */		/* 7 - 3 = 4 */
	/* N = 4 -> 15 = H(4) */	/* ? - 7 = 8 */
	/* H(1) + 1 = 2 */
	/* H(2) + 1 = 4 */
	/* H(3) + 1 = 8 */
	/* H(4) + 1 = 16 */
	/* H(N) + 1 = 2^N */
	/* H(N) = 2^N - 1 */
			= 2^(N-1) * 2 - 1
			= (2^(N-1) - 1) * 2 + 1
			= H(N-1) * 2 + 1
		N 段のハノイの塔を解くには、 H(N) だけディスクを動かす
	それは
		N-1 段のハノイの塔を二回解いて、あと、一回ディスクを動かすのと同じ
		位大変だ
	*/
	/*
		1
		2
		3
	------------------
	*/
	
	s_hanoi_move ( "1", "2" );	// ディスク 1 を 1 から 2 に移動
	s_hanoi_move ( "1", "3" );	// ディスク 2 を 1 から 3 に移動
	s_hanoi_move ( "2", "3" );	// ディスク 1 を 2 から 3 に移動
	/*
		
				1
		3		2
	------------------
	*/
	s_hanoi_move ( "1", "2" );	// ディスク 3 を 1 から 2 に移動
	/*
		
				1
			3	2
	------------------
	*/
	s_hanoi_move ( "3", "1" );	// ディスク 1 を 3 から 1 に移動
	s_hanoi_move ( "3", "2" );	// ディスク 2 を 3 から 2 に移動
	s_hanoi_move ( "1", "2" );	// ディスク 1 を 1 から 2 に移動
	/*
			 1
			 2
			 3
	--------------------
	   (1)  (2)	 (3)
	*/
	putchar ( '>' );
	putchar ( getchar() );
	s_hanoi_stop();
	return 0;
}
/*
 * 2016/06/03 p-009.c
 */
#include <stdio.h>
/*
 *	ハノイプログラムには、s_hanoi.h が必要
 */
#include "s_hanoi.h"
/*
 * ハノイの塔 プログラム
 *
 */
/*
hanoi ( N 段を, From, To, Work )
	N
	===========
	F	T	W
*/
void hanoi(char *N, char *From, char *To, char *Work ) {
	/*
		N 段を From, から To へ、 Work を使って移動したい
			N - 1 段を、From から Work に移動する
				From から To へ、一つ運ぶ
			N - 1 段を、Work から、 To に移動する
	*/
	if ( !strcmp ( N, "" ) ) {
		/* */
	} else {
		hanoi ( N + 1, From, Work, To );
		s_hanoi_move ( From, To );
		hanoi ( N + 1, Work, To, From );
	}
}
int main ( int argc, char *argv[] ) {
  /*
   * 最初は "1" に全ての円盤がおいてある
   */
	/*
	 * ハノイで、できること
	 *   s_hanoi_set ( char *discs ) : ハノイの塔の高さを設定する
	 *   s_hanoi_move ( char *from, char *to ) : from にある円盤を to に移す
	 *   s_hanoi_clear () : 最初の状態に戻す
	 *   s_hanoi_stop : ハノイプログラムの終了 : return 0 の前に呼び出す
	 */
	s_hanoi_init();
	s_hanoi_size ( argv[1] );	// 高さを 3 に設定
	putchar ( '>' );
	putchar ( getchar() );
	hanoi ( argv[1], "1", "2", "3" );
	putchar ( '>' );
	putchar ( getchar() );
	s_hanoi_stop();
	return 0;
}