初めてC言語に触れる方向けに、最小のプログラムを作成し、コンパイルして画面に「Hello, World!」を表示するまでの流れを段階的に解説します。
開発環境構築についてはこちらで解説していますので、環境構築がまだの場合はこちらを参考んしてください。
ファイルの作成から実行方法、つまづきやすいエラーの直し方まで、丁寧に説明しますので安心して読み進めてください。
C言語で「Hello, World!」を書く
最初のCプログラムは、とても小さなファイル1つで完成します。
ここではソースファイルの用意、main
関数の書き方、そして表示に使うprintf
の基本を確認します。
hello.cを作成
作業用のフォルダを用意し、その中にソースファイルhello.c
を作成して保存します。
拡張子は必ず.c
にし、文字コードはUTF-8を推奨します。
ワープロソフト(Wordなど)ではなく、プレーンテキストのエディタを使います。
日本語環境では全角文字が紛れやすいので、プログラム中の引用符やセミコロン、括弧、バックスラッシュは半角を使用してください。
以下は環境ごとのエディタ例です。
どれもプレーンテキストで保存できます。
環境 | おすすめのエディタ(例) | 注意点 |
---|---|---|
Windows | メモ帳、Visual Studio Code、Notepad++ | 拡張子を.c にする。メモ帳は「名前を付けて保存」で文字コードをUTF-8に設定 |
macOS | テキストエディット(フォーマットをプレーンテキストに変更)、Visual Studio Code | リッチテキストはオフにする |
Linux | gedit、Mousepad、nano、vim、Visual Studio Code | 通常UTF-8。ターミナルエディタは保存方法に注意 |
main関数とprintfの書き方
hello.c
の中身は次の通りです。
各行にコメントを添えてありますので、何をしているか確認しながら入力してください。
// hello.c - 画面に "Hello, World!" を表示する最小のCプログラム
#include <stdio.h> // printf関数を使うための標準入出力ヘッダ
int main(void) { // プログラムの入口(エントリポイント)
// 画面(標準出力)に文字列を表示し、最後に改行を入れる
printf("Hello, World!\n");
return 0; // 正常終了をOSに知らせる
}
Hello, World!
このプログラムでは、#include <stdio.h>
で標準入出力ライブラリを読み込み、printf
で文字列を表示しています。
最後のreturn 0;
は「異常なく終わった」ことをOSに伝えます。
改行(\n)とセミコロン
printf
の文字列中にある\n
は改行を表す特殊な文字(エスケープシーケンス)です。
これがないと、次の表示やシェルのプロンプトが同じ行に続いてしまい、見づらくなります。
例として、あえて\n
を省いた場合の違いを見てみます。
// 改行を入れない例(見づらくなる)
#include <stdio.h>
int main(void) {
printf("Hello, World!"); // ← \n を付けていない
return 0;
}
出力例(プロンプトが同じ行に続くことがあります)
Hello, World!$
また、C言語では文の終わりをセミコロン;
で区切ります。
セミコロンを忘れるとコンパイルエラーになります。
// セミコロンを忘れた誤った例
#include <stdio.h>
int main(void) {
printf("Hello, World!\n") // ← セミコロンなし(誤り)
return 0;
}
コンパイル時のエラー例
hello.c:6:30: error: expected ';' after expression
printf("Hello, World!\n")
^
;
1 error generated.
エラーの意味は「式の後ろにセミコロンが必要」です。
該当行の末尾に;
を付けて再コンパイルしてください。
C言語のコンパイルと実行
ソースコードはそのままでは動かないため、コンパイラで機械語に変換して実行ファイルを作ります。
代表的なコンパイラはgcc
とclang
で、使い方はよく似ています。
gcc/clangでコンパイルする手順
ターミナル(コマンドプロンプト、PowerShell)を開き、hello.c
を保存したフォルダに移動してコンパイルします。
フォルダ移動はcd
コマンドを使います。
gccの例
# フォルダへ移動してから実行
gcc hello.c -o hello
clangの例
clang hello.c -o hello
clの例
# 開発者コマンドプロンプト (Developer Command Prompt) で実行
cl hello.c
うまくいくと、同じフォルダに実行ファイルが生成されます。
LinuxやmacOSではhello
、Windowsではhello.exe
という名前になります。
初心者のうちは警告にも気づけるよう、次のように警告を有効にするのもおすすめです。
# gccで警告多め
gcc -Wall -Wextra hello.c -o hello
# clangで警告多め
clang -Wall -Wextra hello.c -o hello
# clで警告多め
cl /W4 hello.c
環境ごとの代表的なコマンドを表にまとめます。
OS/環境 | コンパイラ | コマンド例 |
---|---|---|
macOS(標準) | clang | clang hello.c -o hello |
Linux(多くのディストリ) | gcc | gcc hello.c -o hello |
Windows(MSYS2/MinGW) | gcc | gcc hello.c -o hello.exe |
Windows(WSL上) | gccまたはclang | gcc hello.c -o hello あるいは clang hello.c -o hello |
MSYS2やWSLを使うと、LinuxやmacOSと同様の手順で作業できるため学習がスムーズです。
実行ファイルの起動と出力確認
コンパイルが成功したら、実行ファイルを起動して表示を確認します。
Linux/macOSの実行
./hello
Hello, World!
Windowsの実行(PowerShellやコマンドプロンプト)
.\hello.exe
Hello, World!
期待どおりに表示されれば成功です。
よくあるエラーと対処(ファイル名/全角/タイプミス)
初心者がつまずきやすいポイントを具体例とともにまとめます。
いずれも原因を一つずつ切り分けると解決しやすくなります。
ファイル名や場所の間違い
hello.c
が存在しない場所でコンパイルしていると、ファイルが見つからないと表示されます。
gcc: error: hello.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.
対処として、現在位置をpwd
(Linux/macOS)やcd
のみ(Windows)で確認し、ls
やdir
でファイル一覧を見ます。
正しいフォルダに移動してから再実行してください。
また、Hello.c
とhello.c
のように大小文字が異なると、LinuxやmacOSでは別名として扱われます。
拡張子の誤り(hello.c.txt)
Windowsでは拡張子が隠れていることがあります。
実際にはhello.c.txt
のようになっているとコンパイラはCファイルとして扱いません。
エクスプローラーの「表示」から「ファイル名拡張子」を有効にし、拡張子を.c
に直してください。
全角記号の混入
全角の記号を使うと、コンパイルエラーになります。
例として、全角セミコロンや全角ダブルクォートは使えません。
printf(”Hello, World!\n”); // 全角ダブルクォート(誤り)
printf("Hello, World!\n"); // 全角セミコロン(誤り)
hello.c:5:8: error: stray '\342' in program
hello.c:5:9: error: stray '\200' in program
hello.c:5:10: error: stray '\235' in program
hello.c:6:33: error: expected ';' after expression
文字はすべて半角で入力します。
日本語キーボードでは、バックスラッシュ\
が画面上で円記号¥
に見えることがありますが、同じ文字として扱われます。
一方で、全角の¥
は別文字なので使わないよう注意してください。
改行は必ず半角の\n
です。
誤った改行指定と正しい指定の比較
printf("Hello, World!\n"); // 全角の\(バックスラッシュではない) → 改行されない
printf("Hello, World!\n"); // 半角の\ n → 正しく改行
タイプミスやヘッダの書き忘れ
printf
のスペルやmain
のつづりを誤るとエラーになります。
また、#include <stdio.h>
を忘れると、コンパイラがprintf
の宣言を見つけられません。
例1: ヘッダ忘れ
// #include <stdio.h> を書き忘れた誤り
int main(void) {
printf("Hello, World!\n");
return 0;
}
警告やエラーの例
hello.c:3:5: warning: implicit declaration of function 'printf' is invalid in C99 [-Wimplicit-function-declaration]
この場合は、先頭に#include <stdio.h>
を追加してください。
例2: main
のつづり間違い
int mian(void) { // mian(誤り) → main(正しい)
printf("Hello, World!\n");
return 0;
}
リンクエラーの例
/usr/bin/ld: /tmp/cc....o: in function `mian':
hello.c:(.text+0x...): undefined reference to `main'
collect2: error: ld returned 1 exit status
エントリポイントは必ずint main(void)
と書きます。
パスに空白がある場合
ユーザ名やフォルダ名に空白が含まれていると、cd
やコンパイルの時にパスを引用符で囲う必要があります。
cd "C:\Users\Your Name\Projects\c"
gcc hello.c -o hello
空白を正しく扱えば問題なくコンパイルできます。
まとめ
本記事では、C言語の最小プログラムであるHello, World!
を題材に、ファイル作成からコンパイル、実行、そして基本的なトラブルの対処までを段階的に確認しました。
要点は次の通りです。
まず、hello.c
をUTF-8のプレーンテキストとして作成し、#include <stdio.h>
とint main(void)
を骨組みにprintf("...\\n");
で表示します。
次に、gcc hello.c -o hello
やclang hello.c -o hello
でコンパイルし、./hello
(Windowsは.\hello.exe
)で実行して結果を確認します。
よくある失敗は、セミコロンの付け忘れ、全角記号の混入、ファイル名や場所の間違い、ヘッダの書き忘れです。
これらに気をつければ、C言語の基本的な開発サイクルを自分の手で確実に回せるようになります。
次の一歩として、文字列を変えてみたり、複数行表示や変数の表示に挑戦して、基礎をさらに強固にしていきましょう。