macbookでC言語を学習する方法

本稿では、私が柴田望洋著の『新・明解C言語 初級編』と『新・明解C言語 中級編』で独学してる際につまづいた以下に２点についての解決策を記録しています。

1. XcodeでC言語のコーディングからプログラムの実行結果の確認をする方法
1. printfの\a(ビープ音)や\b(後退)を確認する方法

＊Xcodeはmacbookで使用できるアプリケーションです。Xcodeのインストールの説明は飛ばします。
# XcodeでC言語のコーディングからプログラムの実行結果の確認をする方法 #
**Xcodeを開きます。**
<img width="837" alt="1.Xcode起動.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/c52ca151-23c9-9504-eeef-f5eb8f2ad976.png">

**プロジェクトの作成を行います。**
Xcodeの起動画面から「Create a new Xcode project」を選択します。
以下のような画面が出てきます。これはプロジェクトの種類を指定する画面です。
柴田氏の参考書では、コンソールプログラムを作成しているので、「macOS > Command Line Tool」を選択して、右下の「Next」をクリックします。
<img width="1280" alt="2.プロジェクト作成1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/904cbe55-3742-91c0-fe42-28994b2f03ce.png">
次にプロジェクトの名前などを指定する画面が出てきます。
Product NameやOrganization Nameなどは適当な名前を入力してください。
LanguageはC言語を扱うので「C」を指定してください。
右下の「Next」をクリックします。
<img width="1280" alt="2.プロジェクト作成2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/d2b3497e-57ca-bf13-a4d4-f3ef32f9ee99.png">
Finderが開くのでプロジェクトを保存する場所を指定します。
プロジェクト画面が出れば、プロジェクトの作成は終わりです。
<img width="1280" alt="3.プロジェクト画面２.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/282a523f-e5af-5efe-c275-dbde41479355.png">


**コーディングをします。**
下のコードをコーディングします。
Hello World!を表示するプログラムです。

```c:test.c
#include <stdio.h>

int main(void)
{
    printf("Hello, World!\n");
    return 0;
}
```

プロジェクト画面の左側にあるナビゲーターエリアに注目してください。
プロジェクトと同名のフォルダにあるソースファイルをクリックします。
<img width="1280" alt="3.プロジェクト画面.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/a1639a9e-f252-9c1a-a658-558fd20c49f9.png">
エディターエリアにソースファイルが表示されるのでコーディングしていきます。
<img width="1280" alt="5.コーディング.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/573aff8a-5cba-6821-b6c0-2e94f28b5d6e.png">

**プログラムの実行結果の確認をします。**
左上の「▶︎」のボタンをクリックすると、コンパイルと生成した実行ファイルの実行が行われ、プロジェクト画面の下側にあるデバックエリアにプログラムの実行結果が表示されます。
<img width="1280" alt="6.コンパイル実行.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/b30d34dd-5360-3948-b6f0-5a57901725a4.png">

ただし、この実行結果の確認方法では、\aや\bなど確認の取れないエスケープシーケンスがでてきます。これはコンソールの問題に思われます（たぶん・・・）。
デバックエリアの右側はコンソールの役割を果たしてるらしいのですが、確認の取れないエスケープシーケンスが出てくるあたり、あまり親切では無さそうです。
次項の方法でこれらを実行確認することができます。

# printfの\a(ビープ音)や\b(後退)を確認する方法 #
作成したCファイルをターミナルからgccでコンパイルして実行確認するという方法もあります。
しかし、今回はもっと楽にXcodeによって生成された実行ファイルから実行確認する方法を記述します。

**コーディングをします。**
以下のコードをコーディングします。
Hello World!を表示して１秒ごとにビープ音を鳴らしながら右から一文字ずつ消していくプログラムです。

```c:test.c
#include <stdio.h>
#include <time.h>

void Mysleep(unsigned long x)
{
    clock_t c = clock();
    while((1000.0 * ((clock() - c) / CLOCKS_PER_SEC)) < x);
}

int main(void)
{
    int i;
    printf("Hello, World!");
    fflush(stdout);
    for(i = 0; i < 13; i++)
    {
        Mysleep(1000);
        printf("\a\b \b");
        fflush(stdout);
    }
    return 0;
}
```

**Xcodeでコンパイルされた実行ファイルを確認**
左上の「▶︎」のボタンをクリックすると、コンパイルと実行が行われますが、ビープ音を鳴らしながら右から一文字ずつ消していく過程は確認されません。
<img width="1280" alt="7.未確認.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/41527178-5d66-e687-0e7c-1f6cec547bd8.png">
プロジェクト画面の左側にあるナビゲーターエリアに注目してください。
プロジェクトと同名のフォルダとは別にProductsという名前のフォルダがあるので開いてください。
プロジェクトと同名の実行ファイルが現れるのでクリックしてください。
<img width="1280" alt="8.実行ファイル確認.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/d26c4c3e-6896-b00b-9ec9-094bb1eb960c.png">

**Finderで実行ファイルを表示する**
プロジェクト画面の右側にあるユーティリティエリアに注目してください。
<img width="1280" alt="9.ユーティリティエリア.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/4e5cd68e-1aae-61dc-5123-151e1fe4e87c.png">
実行ファイルのディレクトリの確認が取れます。右矢印のボタンをクリックすれば、Finderが開きます。
<img width="775" alt="10.Finder.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/7be98e2d-091e-f75a-25f4-a215139b5211.png">


**実行ファイルを実行する**
Finderに表示されている実行ファイルをダブルクリックすればターミナルが開いて実行確認ができます。
![11コンソール確認.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667491/6b399041-ca3c-01d9-f045-1380d786138e.png)