前言
以 C 語言為主體的程式食譜 (cookbook) 算是相對少見的題材。一方面是當代高階語言眾多,以純 C 寫應用程式的機會比較少。另一方面是現在網路資訊發達,初級的問題透過網路很快就可以找到答案。Packt 所出版的 C Programming Cookbook 是近年來少的 C 語言程式食譜。本文會帶著讀者來看一下這本書籍的內容。
本書綱要
本文包含了以下的內容:
- 陣列的使用範例
- 字串的使用範例
- 函式的使用範例
- 指標的使用範例
- 低階檔案處理
- 利用執行緒撰寫共時性程式
- 撰寫多行程程式
- 利用 socket 撰寫網路程式
- 連接 MySQL 資料庫
另外,Packt 很大方地在 GitHub 上面公開本書的範例程式碼。本書的讀者就不用逐行手動輸入這些範例程式,可以快速地觀摩並體驗這些程式。
內容介紹
本書的前半段偏向演算法相關的內容,乍看不太實用。但這在 C 語言教材很難完全避免。比起其他的高階語言,C 語言相對沒那麼高階,有些在其他語言可以用函式庫很快解決的事,在 C 語言得自行實作。
由於書籍的容量限制,每個主題的範例都不多。其實重點並不是去記這些範例,而是藉由這些範例理解陣列、字串、指標、檔案物件等特性的用法,之後就可以自己根據其原理加以變化。
第二部分是關於共時性程式,在 C 語言中是使用傳統的執行緒和行程來寫。本書中未使用 C11 的執行緒函式庫,而是直接用類 Unix 系統上相關的函式庫。但原作者似乎是在 Windows 上展示這些範例。如果讀者使用 Windows,可以用 MinGW 來編譯這些範例程式,這在原書上並未詳細說明。
第三部分是關於網路程式,本書選擇 socket 層級來寫網路程式。同樣是以類 Unix 系統上的函式庫為主,對 Windows 使用者來說就不太適用。由於篇幅的限制,這段內容僅展示基本的傳接訊息。
最後一部分是連結 MySQL 資料庫。基本上就是中規中矩的 MySQL C API 範例教學。由於 MySQL 還算是流行度高的資料庫,本章有一定實用價值。要注意本書的範例直接把 MySQL 帳密寫死在程式碼中,而且沒有防 code injection,如果要寫對外溝通的程式,不宜原封不動照抄這些範例。
本書為了簡化 C 程式碼,在範例上做了一些簡化,有一些程式的錯誤處理不是相當嚴謹。如果要把這些程式碼用在自己的專案上,最好還是稍加修改一下。
評語
一般來說,程式食譜類的書籍會以各種應用情境為主,著重在套件的介紹及使用,不會放太多內容在演算法上。相對來說,本書真正和應用程式相關的內容偏少,和演算法相關的內容稍微多了些。但 C 語言中階書籍相對缺乏,如果想要在學完核心語法後更進一步,本書仍有一定的參考價值。