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 chap16

echoは名前を表示するだけなので、このコマンド自体ではディレクトリは作成されません。

波括弧やドットは半角で入力し、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ファイルやディレクトリを表示する
-11行に一つずつ表示する。数字の1
-dディレクトリの中身ではなく、ディレクトリ自体を表示する
chap{02..16}/確認する15個のディレクトリを指定する

今回は、作成したディレクトリ自体を確認したいので、-dを付けています。

作成直後のディレクトリは空です。中身を表示する方法では何も出ない場合があるため、目的に合わせてオプションを使い分けましょう。

図2:番号の展開からディレクトリの作成と確認へ

この図から分かること

Bashが連番を含む名前を展開し、その結果をmkdirが受け取ってディレクトリを作成します。

作成後はlsで確認します。コマンドを入力したことだけで判断せず、目的の名前がそろっていることまで確かめましょう。

WindowsとVS Codeでも確認する

作成したディレクトリは、Windowsのエクスプローラーからも確認できます。

  1. WindowsキーとEキーを押す。
  2. アドレスバーにC:\c-mysqlと入力する。
  3. Enterキーを押す。
  4. 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章のディレクトリ
WindowsC:\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.exeGCCが作成する実行ファイル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で保存するところから始めましょう。

Follow me!