C言語+MySQL入門|章ごとのディレクトリを作成する

C言語+MySQL入門|章ごとのディレクトリを作成する
前回は、学習用の作業フォルダとしてC:\c-mysqlを作成しました。
今回は、その中に chap02からchap16までのディレクトリ を作成します。これから書くプログラムを章ごとに保存し、学習した内容を後から確認しやすくしましょう。
この記事では、次の作業を行います。
- 章ごとにディレクトリを分ける理由を知る。
- chap02からchap16までをまとめて作成する。
- 作成したディレクトリを一覧で確認する。
- VS Codeから同じ構成を確認する。
- 第2章の作業場所であるchap02へ移動する。
第1章ではプログラムを作成しなかったため、今回用意するのは第2章から第16章までの、合計15個のディレクトリです。
プログラムを章ごとに整理する
この連載では、最初のCプログラムから始めて、MySQLへの接続、データベース操作、コンソール版、GUI版へと進んでいきます。
すべてのファイルを同じ場所へ保存すると、どの章で作成したものか分かりにくくなります。
そこで、C:\c-mysqlの中に、章ごとの保存場所を用意します。
| ディレクトリ名 | 用途 |
|---|---|
| chap02 | 第2章で作成するCファイルや実行ファイルを保存する |
| chap03 | 第3章で使用するSQLファイルなどを保存する |
| chap04 | 第4章で作成するMySQL接続プログラムなどを保存する |
| chap05以降 | 対応する章で作成するファイルを保存する |
| chap16 | 第16章で使用するファイルを保存する |
chap02からchap16までは、すべてC:\c-mysqlの直下に作成します。
chap02の中にchap03を作るような入れ子ではなく、同じ階層に並べる構成 です。
章番号を2桁にそろえる
ディレクトリ名には、chap2ではなくchap02を使います。
数字を2桁にそろえると、名前順に表示したときに章の順番を把握しやすくなります。
また、記事中のパスと実際の名前が一致していると、コマンドの入力やファイルの保存で迷いにくくなります。小文字のchapに、2桁の章番号を続ける形で統一しましょう。
図1:章ごとのディレクトリを同じ階層に並べる

この図から分かること
C:\c-mysqlを親フォルダとして、その直下に章ごとのディレクトリを並べます。
章番号と保存場所が対応するため、学習中のファイルや、前の章で作成したプログラムを見つけやすくなります。
UCRT64で作業場所を確認する
VS Codeの統合ターミナル、またはスタートメニューからMSYS2 UCRT64を開きます。
以下のコマンドは、UCRT64のBashで実行してください。
まず、環境を確認します。
echo $MSYSTEM実行結果の例
UCRT64続けて、前回作成した作業フォルダへ移動します。
cd /c/c-mysql現在位置を確認しましょう。
pwd実行結果の例
/c/c-mysqlこの場所にいることを確認してから、章ごとのディレクトリを作成します。
cdでエラーが表示された場合は、先へ進まず、前回作成したフォルダの場所や名前を確認してください。
chap02からchap16までをまとめて作成する
UCRT64のBashでは、連続した番号を使って、複数の名前をまとめて指定できます。
次のコマンドを実行します。
mkdir -p chap{02..16}実行結果の例
正常に完了した場合、通常は何も表示されず、次のコマンドを入力できる状態に戻ります。
この一つのコマンドで、chap02からchap16までの15個のディレクトリを作成できます。
コマンドの意味
| コマンドの部分 | 意味 |
|---|---|
| mkdir | ディレクトリを作成する |
| -p | 対象のディレクトリがすでにあっても、そのまま利用する |
| chap | すべてのディレクトリ名に付ける共通部分 |
| {02..16} | 02から16までの番号を展開する |
-pには、必要な親ディレクトリを作成する働きもあります。
すでに章のディレクトリが存在していても、その中のファイルを消したり、初期化したりすることはありません。ただし、同じ名前の通常ファイルがある場合などはエラーになります。
名前を展開するのはBash
chap{02..16}を複数の名前へ展開するのは、mkdirではなくBashです。この機能を ブレース展開 と呼びます。
Bashが名前を展開してから、mkdirへ渡します。02のように先頭に0を付けることで、生成される番号も必要に応じて0で埋められます。
展開される名前は、次のコマンドでも確認できます。
echo chap{02..16}実行結果の例
chap02 chap03 chap04 chap05 chap06 chap07 chap08 chap09 chap10 chap11 chap12 chap13 chap14 chap15 chap16echoは名前を表示するだけなので、このコマンド自体ではディレクトリは作成されません。
波括弧やドットは半角で入力し、02と16の間にはドットを二つ並べてください。chapと波括弧の間にも空白を入れません。
作成したディレクトリを一覧で確認する
次のコマンドを実行します。
ls -1d chap{02..16}/実行結果の例
chap02/
chap03/
chap04/
chap05/
chap06/
chap07/
chap08/
chap09/
chap10/
chap11/
chap12/
chap13/
chap14/
chap15/
chap16/15個の名前が表示され、見つからないというエラーがなければ、指定したディレクトリを確認できています。
| 指定 | 意味 |
|---|---|
| ls | ファイルやディレクトリを表示する |
| -1 | 1行に一つずつ表示する。数字の1 |
| -d | ディレクトリの中身ではなく、ディレクトリ自体を表示する |
| chap{02..16}/ | 確認する15個のディレクトリを指定する |
今回は、作成したディレクトリ自体を確認したいので、-dを付けています。
作成直後のディレクトリは空です。中身を表示する方法では何も出ない場合があるため、目的に合わせてオプションを使い分けましょう。
図2:番号の展開からディレクトリの作成と確認へ

この図から分かること
Bashが連番を含む名前を展開し、その結果をmkdirが受け取ってディレクトリを作成します。
作成後はlsで確認します。コマンドを入力したことだけで判断せず、目的の名前がそろっていることまで確かめましょう。
WindowsとVS Codeでも確認する
作成したディレクトリは、Windowsのエクスプローラーからも確認できます。
- WindowsキーとEキーを押す。
- アドレスバーにC:\c-mysqlと入力する。
- Enterキーを押す。
- chap02からchap16までが並んでいることを確認する。
これらは、UCRT64から作成したディレクトリと同じものです。
VS Codeのエクスプローラーで確認する
前回と同じように、VS CodeでC:\c-mysqlを開きます。
左側のエクスプローラーに、章ごとのディレクトリが表示されることを確認してください。表示が更新されていない場合は、エクスプローラーの更新操作を行います。
今の段階で各ディレクトリの中が空でも問題ありません。プログラムやSQLファイルは、それぞれの章で追加します。
第2章の作業場所へ移動する
最初のCプログラムは、chap02に保存します。
現在位置が/c/c-mysqlであることを確認してから、次のコマンドを実行します。
cd chap02続けて、現在位置を確認します。
pwd実行結果の例
/c/c-mysql/chap02この状態になれば、第2章の作業場所へ移動できています。
| 表記を使う場所 | 第2章のディレクトリ |
|---|---|
| Windows | C:\c-mysql\chap02 |
| UCRT64 | /c/c-mysql/chap02 |
現在位置に関係なく移動する方法
すでに別の場所へ移動している場合は、絶対パスを使えます。
cd /c/c-mysql/chap02この指定なら、現在位置に関係なく、第2章のディレクトリへ移動できます。
一方、cd chap02は現在位置を基準にします。すでにchap02の中にいる状態で実行すると、その中にさらにchap02を探すことになります。
移動先が分からなくなったら、pwdで確認し、必要に応じて絶対パスを使いましょう。
ソースコードと実行ファイルを同じ章に保存する
第2章では、最終的に次の二つのファイルをchap02に用意します。
| ファイル | 役割 | 作成するタイミング |
|---|---|---|
| hello.c | 自分で入力・保存するCプログラム | 2.13 |
| hello.exe | GCCが作成する実行ファイル | 2.14以降 |
この記事では、保存先のディレクトリを用意したところまでです。まだhello.cやhello.exeが存在しなくても正常です。
別の章で同じ名前を使っても区別できる
同じファイル名でも、保存先のディレクトリが異なれば、別のファイルとして扱えます。
たとえば、次の二つは異なる場所です。
- C:\c-mysql\chap04\main.c
- C:\c-mysql\chap05\main.c
これは保存場所の違いを示す例です。実際に作成するファイル名は、各記事の指定に従ってください。
章ごとに保存場所を分けておけば、前の章のプログラムを残しながら、次の内容へ進めます。
図3:第2章のファイルをchap02にそろえる

この図から分かること
第2章では、編集するhello.cと、コンパイルによって作成されるhello.exeをchap02に保存します。
保存先とターミナルの現在位置をそろえることで、ファイルを指定するコマンドを簡潔に書けるようになります。
ディレクトリの作成で困ったときは
章のディレクトリが別の場所にできた
mkdir -p chap{02..16}は、現在のディレクトリを基準に作成します。
目的の場所に表示されない場合は、pwdで現在位置を確認してください。
C:\c-mysqlに作成し直す場合は、次のように移動してから実行します。
cd /c/c-mysql
mkdir -p chap{02..16}別の場所に作成したディレクトリは、自動的には移動しません。必要なファイルが入っている場合は、場所と内容を確認してから整理しましょう。
chap{02..16}という名前がそのまま表示される
ブレース展開が働いていない可能性があります。
次の点を確認してください。
- UCRT64のBashで実行しているか。
- 波括弧とドットが半角になっているか。
- ドットが二つになっているか。
- chap{02..16}全体を引用符で囲んでいないか。
名前を一つずつ指定する方法でも作成できます。
mkdir -p chap02 chap03 chap04 chap05 chap06 chap07 chap08 chap09 chap10 chap11 chap12 chap13 chap14 chap15 chap16このコマンドも、/c/c-mysqlへ移動した状態で実行してください。
すでにディレクトリがある
-pを付けているため、既存のディレクトリはそのまま利用されます。
学習を途中から再開するときも、同じコマンドで不足しているディレクトリを追加できます。既存のファイルを削除して作り直す必要はありません。
エディターではchap02を選んだのに、ターミナルは別の場所にいる
VS Codeのエクスプローラーでフォルダを選んでも、ターミナルの現在位置は変わりません。
ターミナルでは、cdで移動し、pwdで確認します。
cd /c/c-mysql/chap02
pwd実行結果の例
/c/c-mysql/chap02次は最初のCプログラムを書く
chap02からchap16までの15個のディレクトリが、C:\c-mysqlの直下にそろいました。
次の記事では、chap02にhello.cを作成します。VS Codeで短いCプログラムを入力し、UTF-8で保存するところから始めましょう。










