未完成 2013.7.31 Ver1完成予定

Cで作る簡単なツール ★index ▲戻る

c言語はBasicやCOBOLに比べて難しいです。
特にマイクロソフトのVisual C++でWindowsアプリを作ろうと思ったら少し何かを
やろうと思っても難しいです。
Visual C++でもコンソールアプリはそれほど難しくありません。
それでも開発環境がすごく大掛かりになり、できればもっと軽いCで作りたい。

ひと昔前、無料で使用できるCコンパイラというとボーランドのBCC32が有名だった。
ボーランド社は1980年代にはマイクロソフトを上回る勢いだったが結局競争に敗れ、BCC32は
10年以上バージョンアップしてなく、bcc32は1999年のC言語の規格を満たしてない。
"無料で使えるCコンパイラ"でグーグル検索しても未だにBCC32を推すホームページが
多いが、mixiの方に教えていただいてgccに辿り着きました。

ダウンロードと設定は以下のページを参考に。
gcc(MINGW版)をとりあえず使うには
私はインストール後、環境変数pathに C:\MinGW\bin を追加しています。
(スタートボタン-コントロールパネル-システム-詳細設定-環境変数 でpath をポイントしてから編集)

コマンドプロンプトを開いてgcc Enterと入力して反応があればよし。(以降Enterは略)
「内部コマンド、外部コマンド、操作可能なプログラム・・として認識されません」と出たらpath設定要です。

どこかに作業用ディレクトリを作り(例、c:\dev\c  cドライブのdev\cディレクトリ)
以下のようなソースプログラムを作ります。

// helloworld.c
#include <stdio.h>
int main(void){
    printf("Hello, world!\n");
    return 0;
}

次にこれをhelloworld.cという名前で保存します。helloworld.cppでも大丈夫です。
コンパイルするにはコマンドプロンプトを開き
(スタートボタン-全てのプログラム-アクセサリ-コマンドプロンプト)
ソースプログラムのありかに移動します。

コマンドプロンプトの画面は

C:\Users\ユーザ名>  (ユーザ名はWindowsのユーザ名)

となっていますが

C:\Users\ユーザ名>cd c:\c

と入力すると

c:\dev\c

と変わる。
コンパイルコマンド gcc helloworld.c -o helloworld.exe

ここでコンパイルエラーが出なければ

実行コマンド    helloworld

これで helloworld と打てば "Hello, world!" と返してくればOKです。

改めてソースプログラムを見てみましょう。

//s01  helloworld.c
#include <stdio.h>
int main(void){
  printf("Hello, world!\n");
  return 0;
}

最初の // helloworld.c というのはコメントです。またコメントは

/* コメント */

という形式も可能です。

次の #include <stdio.h> というのは、ヘッダーファイルのインクルード指示です。
stdio.h というのは standard input-output header file の略称で
画面やファイル、プリンタなどとの入出力を制御しています。

次の int main(void){ は
 引数を持たない、整数を返す メイン関数 で 最後の"{"は対になる"}"までがmain関数と示しています。
 mainというのは特別な関数で、コンソールアプリケーションの動作の起点となります。

次に  printf("Hello, world!\n"); という行がこのプログラムの処理内容の部分です。
 "Hello, world!\n" というデータを標準出力に書き出します。

  return 0; はmain関数に戻り値を設定して終了します。

最後の"}"は main 関数の範囲の終わりを示します。

さて、main関数にはもうひとつ書式があります。それは

int main (int argc,char *argv[]){ という形式です。(先頭の"int"という部分はいろいろ変わります)

  mainの後に来る (void) と (int argc,char *argv[]) について解説すれば
 (void) は「引数を持たない」という意味だったのに対して
 (int argc,char *argv[])は整数argcが示す個数の char *argv[] という文字列の引数を持つというような意味です。
 本当はもっと難しいようですが、ともかく使ってみましょう。

//s02.c
#include <stdio.h>
int main(int argc,char *argv[]){
	printf(argv[1]);
	return 0;
}

コンパイル:gcc s02.c -o s02.exe

実行:s02 hello と打てば「hello」と、s02 goodbyと打てば「goolbye」と返してきます。
試しにs02 1 2 3 4 5と打てば「1 2 3 4 5」と返してきます。

また少し改造して次はs03です。

//s03.c
#include <stdio.h>
int main(int argc,char *argv[]){
	int ix;
	printf("argc=%d\n",argc);
	for(ix = 0;ix < argc;ix++){
		printf("%s ",argv[ix]);
	}
	return 0;
}

ここでs02.cとs03.cの解説です。
	printf(argv[1]); は引数を出力せよというコマンドです。

	int ix; は整数型の変数 ix を宣言しています。

	printf("argc=%d\n",argc); 引数の数を表す整数を10進数として出力しています。

	for(ix = 0;ix < argc;ix++){
   は最後の{ に注目してください。対になる閉じ括弧までを変数ixが0から引数の数を表す変数より
   小さい間、ひつつづつ加算しながら実行しています。
	printf("%s ",argv[ix]); はix番目の引数を出力します。

次はAsciiコードの実験をしてみます。Asciiコードは本ホームページの文字コード入門を見てください。




no image
◆ JAVA SE SDKのダウンロード
◆Java API 日本語ドキュメント ▲index  △TOP
inserted by FC2 system