C言語の学習には,少なくとも二つの側面があります。一つは文法の正しい理解,もう一つはプログラミング技術の習得です。
文法については,C言語の国際標準規格 ISO:C99(ISO/IEC, Programming Languages -- C, 9899:1999)に準じた理解を目標にします。C99(現C11)の該当箇所(セクションとパラグラフ番号)を掲載しておきましたので,照らしながら読んでください。
なお,ISOの規格に準じた説明を心がけていますが,疑問を感じたり,誤解を招く,正確さを欠くなどの表現がありましたら,C99,あるいは C11 の該当のセクションとパラグラフ番号(または,原文)を添えて,いつでもお問い合わせください。
優れたプログラマの書いたプログラムが,最良の教科書です。しかしながら,直ぐさまそれらが読めるのであれば,入門書など必要ありません。そこで,ここでは UNIX のコマンドやソフト,C言語のライブラリ関数などのソースファイルが読めるようになることを目標に,次のソースファイル(原物)を応用編で取り上げます。
関数名 | 属しているヘッダファイル |
strcmp | string.h |
strlen | string.h |
strcpy | string.h |
strrchr | string.h |
また,読破した方のために,巻末に練習問題を用意しました。練習問題は,その目標に沿って,次のソースファイル(原物)の解読です。
ソースファイル名 | 内容 |
echo.c | UNIX シェルコマンド echo のソースファイル |
strtok.c | C ヘッダファイル string.h 内関数 strtok のソースファイル |
tee.c | UNIX コマンド tee のソースファイル |
最終的には,これらが9割方解読できるようになります。
開発者を目指すのであれば,C言語の歴史や UNIXが生まれる過程などを知ることは有意義なことです。現在の仕様書(C11)に準じていない例を含みますが,次の著作は C言語の原典です。ちなみに,Ritchie (1993) は C言語の歴史です。
Brian W. Kernighan (1974), "Programming C - A Tutorial," Bell Lab.
Brian W. Kernighan and Dennis M. Ritchie (1988), The C Programming Language, 2nd ed., Prentice Hall.
Dennis M. Ritchie (1975), C Reference Manual, Bell Lab.
Dennis M. Ritchie (1993), "The Development of the C Language," HOPL II.