C言語最初のプログラム

Hello World

ソースファイルを作る

まずはソースファイルを作ります。エディタで次のプログラムを書いてHello.cという名前で保存します。このプログラムは有名なプログラムです。

Hello.c

#include <stdio.h>
 
int main()
{
  printf("Hello, World!\n");
  return 0;
}

Hello.c という名前のファイルができているか確認します。

端末から ls と入力します。このページでは実際に入力する文字にこの色をつけ、太字にしています。

~/c$ ls
Hello.c

ls はフォルダ内のファイルを表示するコマンドです。Hello.c というファイルしかないのがわかります。

プロンプトは ユーザー名@ホスト名:カレントディレクトリ名$ ですが、これからも省略して カレントディレクトリ名$ だけ書きます。~ はユーザーホームディレクトリを表しますから、~/c はユーザーホームディレクトリの中のcというディレクトリです。カレントディレクトリは現在作業している場所という意味です。

コンパイルする

コンパイルは端末で指令します。gcc が コンパイルしなさいというコマンドです。

~/c$ gcc Hello.c -o Hello 
~/c$

なにも反応なく次のプロンプトがでたら成功です。

ls で確認すると、Hello という名前のファイルができていることがわかります。

~/c$ ls
Hello  Hello.c

コンパイルができなかったときには、知らせてきます。たとえば、

~/c$ gcc Hallo.c -o Hallo 
gcc: Hallo.c: そのようなファイルやディレクトリはありません
gcc: no input files
~/c$

この場合は、「Hallo.c というファイルをコンパイルする指示だったが、Hallo.c というファイルがなかった」と言っているのです。Hallo.c と Hello.c の一字違いですがコンピュータは厳密です。あるいはエディタで保存したときの名前が違っている場合も考えられます。特にLinuxでは大文字と小文字を区別するので注意して下さい。

Helloという名前のファイルができているのは、-o の後ろに Hello と書いたからです。

~/c$ gcc ソースファイル名 -o 出力ファイル名

実行

プログラムの実行も端末から行います。

~/c$ ./Hello
Hello, World!

Hello, World! が実行結果です。このプログラムは、端末に Hello, World! と表示をするプログラムなのです。

この時実行されるのはHello.cではなくコンパイルして作成されたHelloです。

Hello Worldの説明

もう一度ソースを表示します。説明の都合上、先頭に行番号をつけました。実際のソースファイルでは行番号とコロン( 例えば、1: など)はありません。

1:/* kadai rei 1 */
2:#include <stdio.h>
3: 
4:int main(void)
5:{
6:  printf("Hello, World!\n");
7:  return 0;
8:}

以下、各行の説明です。

1 行目 /* kadai rei 1 */
これは最初の記述にありませんでした。 /**/ ではさんだ部分はプログラムにとしては無視されることになって いるので、自由にメモを書いておけます。 コメント文(注釈文)と呼ばれます。
2 行目 include文
ほとんどのプログラムで書くものなので、最初は「うまくいくようにおまじない」と説明されることも多くあります。 stdはスタンダード、ioはインプットアウトプット、hはヘッダーから来ています。 標準の入力(キーボードなどのこと)と標準の出力(ディスプレイのこと)を使えるようにします。 大抵のプログラムで使いますから、常に #include <stdio.h> は 書くことにしたほうが良いでしょう。ソースの最初の部分に書く必要があります。
3 行目
何もない行は、無視されます。見やすいように適当にこうした空行を 入れることができます。
4 行目
プログラムの入り口の宣言。main関数の入り口です。直接実行するプログラムには必ず一つの main が 必要です。2つの main をつくってはいけません。
5 行目
main関数の内容の始まり示しているものです。
6 行目
printf("..."); は、ディスプレイに " " で くくられた文字列を表示するという命令です。 (実は、printf も関数の一つです)
文字列最後の\nは改行するという意味です。
7 行目
関数(ここではmain関数)の結果(呼び出し側に戻す値)の宣言。特にエラーがないときには0を戻します。
8 行目
main関数の終わりを示すものです。main関数からプログラムは実行され、ここでプログラムは終了します。
聖愛中学高等学校
http://www.seiai.ed.jp/
May. 2009
Oct. 2011