見出し画像

プログラミング学習の記録 #002(C)

なんやかんやNF準備が忙しくて学習を進めることができず、日が空いてしまった。お蔭でNF準備は、割と順調に進み、10月中に提出すべきものは、すべて提出できたはずである。ちなみに、明日も説明会があるので出席して色々と聞き、準備を進めていかねばならない。しかし、この調子では卒業研究も全然進まず、若干、困っているところである。

1. 前回の復習

前回は、printfを用いて文字列を出力した。コメントや友人からの助言などで知ったことを加えて、新たにコードを書いてみた。前回、コードを実行したところ、Terminalで「warning」と表示された。

% cc 1026-2.c
1026-2.c:3:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main()
^
1 warning generated.
% ./a.out    
Koike Minami.

どうやら、関数の戻り値の型を設定していないことが原因ということらしく、教えてもらった通り、「main()」を「int main()」と変更すると、表示されなくなった。また、printfを複数回並べたら、複数行の表示ができたが、これは、

#include <stdio.h>

int main()
{
    printf("What is ESG?\n");
    printf("E: Environment\n");
    printf("S: Social\n");
    printf("G: Governance\n");

    return 0;
}

でも、

#include <stdio.h>

int main()
{
    printf("What is ESG?\n");
    printf("E: Environment\nS: Social\nG: Governance\n");

    return 0;
}

でも、同じように出力されるということを教えてもらった。つまり、「\n」が改行を表すので、printfを複数回並べても、1つのprintfの中で「\n」を用いて文字列を並べてもよいということらしい。まあ、printfを複数回並べた方が見やすいので、並べて書くことの方が多いようには思う。以上のコードを実行すると、いずれも

% cc 1101-1.c
% ./a.out    
What is ESG?
E: Environment
S: Social
G: Governance 

のように出力されたので成功である。

2. UNIXコマンド(ファイルとディレクトリの操作)

この章では、ファイルとディレクトリの操作を行うためのUNIXコマンドについて説明されている。なぜか、Windowsを削除してUbuntuを入れたPCをもっていて、たまに使っていたので、この章で説明されていたUNIXコマンドは、おおむね知っていた。いつまで経っても「cd ..」だけは覚えられないが、それ以外では、あまり困ったこともないので、さらっと読んで終わった。

3. コマンドのカスタマイズ

MacのPCを使用しているため、教科書に記載されている方法そのままでは、うまくコマンドをカスタマイズすることができなかった。代わりに、このサイトを見たところ、うまくできた。rmコマンドを実行するときに、確認を要求するように変更した。つまり、「rm」と入力したときに「rm -i」が実行されるようにした。これを実行してみると、

% ls
1026-1.c        1026-2.c        1026-3.c        1101-1.c        1101-2.c        a.out
% rm a.out
remove a.out? n
% ls      
1026-1.c        1026-2.c        1026-3.c        1101-1.c        1101-2.c        a.out
% rm a.out
remove a.out? y   
% ls
1026-1.c        1026-2.c        1026-3.c        1101-1.c        1101-2.c 

というようなことになった。rmコマンドを入力すると、「remove a.out?」と表示され、1つ目では「n」を入力したので、rmが実行されなかったが、2つ目では「y」を入力したので、rmが実行されたことがわかる。

4. emacs

viを使用するので読み飛ばした。ちなみに、最近ではVScodeを使用することが多い。結局、どれを使うべきか。

5. その他

章末の練習問題として、以下のコードを実行するというものがあった。

#include <stdio.h>

int main()
{
    printf("New Line \n");
    printf("Line Feed\fThis line is feeded.\n");
    printf("Tab\tTab\tTab\n");
    printf("1\t10000\t100000\n");
    printf("Backspace: 123456\b\b\b789\n");
    printf("Return! A part of this line is deleted!\r");
    printf("vertical tab\vvertical tab\vvertical tab\n");
    printf("Special characters: \\ \' \? \"\n");
    printf("Null: \0 Is this sentence printed?");
    printf("\n");

    return 0;
}

実行結果は、

% ./a.out    
New Line 
Line Feed
         This line is feeded.
Tab     Tab     Tab
1       10000   100000
Backspace: 123789
vertical tabrt of this line is deleted!
            vertical tab
                        vertical tab
Special characters: \ ' ? "
Null: 

となった。一応、次の章の内容なので、まだ意味はわからないが、このような結果が求められているのか。

-----

動け!タイムライン

この記事が参加している募集

動物園か水族館にいきたいですね。