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.