C語言實用之道
內容描述
閱讀《C語言實用之道》,可以學習實用的C技術,包括在可複用的函數中經常用到的算法。
在本書中,你將輕鬆獲得以下代碼和建議:代碼佈局和預處理器;控制結構、迭代和選擇;指針和結構;數據庫;可複用性;列表、數組、FIFO和棧;搜索和排序;遞歸;二叉樹;C語言中的和自建的字符串輔助功能;使用Mongoose開發Web服務;構建MathSearch迷宮的遊戲應用代碼;以及嵌入式軟件。
《C語言實用之道》除了提供可立即投入使用的模塊以外,還教你如何充分用好C語言,這是很多面向初學者的其他書籍所不能提供的。
本書特色
•避免常見的C陷阱與缺陷
•用好列表和數組
•執行搜索和排序
•利用二叉樹存儲和檢索數據
•用好遞歸
•管理異常
•訪問數據庫
•利用數值計算方法,結合實際應用計算積分
•通過一種便捷的、不出錯的方法來操縱字符串
•構建一個MathSearch遊戲應用(類似於WordSearch遊戲)
•通過一種便捷的、不出錯的方法來操縱字符串
•處理與嵌入式應用相關的問題
目錄大綱
第1章引言1
1.1編碼風格1
1.1.1縮進2
1.1.2命名和其他規範4
1.1.3 goto的使用5
1.2如何閱讀本書7
第2章微妙之C 9
2.1變量的作用域和生命週期9
2.1.1局部變量9
2.1.2全局變量13
2.1.3函數14
2.2按值調用15
2.3預處理器宏18
2.4布爾值19
2.5結構打包22
2.6字符和區域24
2.7普通字符和寬字符27
2.8處理數值32
2.8.1整數32
2.8.2浮點數34
2.9本章小結54
第3章迭代、遞歸和二叉樹55
3.1迭代55
3.2遞歸57
3.3二叉樹59
3.3.1圖形化顯示一棵樹65
3.3. 2生成一棵隨機樹83
3.3.3遍歷一棵樹88
3.3.4更多關於二叉樹的內容93
3.4本章小結95
第4章列表、棧和隊列97
4.1列表98
4.2棧99
4.2.1基於數組的棧99
4.2.2基於鍊錶的棧109
4.3隊列113
4.3.1基於數組的隊列114
4.3.2基於數組的隊列的更多內容120
4.3.3基於鍊錶的隊列126
4.4本章小結130
第5章異常處理133
5.1長跳轉134
5.2 THROW 135
5.3 TRY和CATCH 136
5.4多個CATCH 144
5.5多個TRY 145
5.6異常用法樣例149
5.7本章小結152
第6章字符串輔助功能153
6.1字符串的分配和釋放154
6.1.1 str_new( ) 155
6.1.2 str_release( ) 159
6.1.3 str_release_all( ) 161
6.1.4 str_list( ) 162
6.1.5一些例子163
6.1.6多個棧166
6.2字符串格式化169
6.3字符串信息171
6.4字符串更新173
6.4.1字符串拷貝173
6.4.2字符串轉換176
6.4.3字符串整理177
6.4.4字符串移除179
6.5搜索181
6.5.1找到一個字符181
6.5.2找到一個子串186
6.6替換189
6.6.1替換一個字符189
6.6.2替換一個子串191
6.7提取一個子串193
6.8拼接字符串196
6.9更多功能200
6.10本章小結201
第7章動態數組205
7.1數組的分配與釋放205
7.1.1分配一個數組206
7.1.2釋放一個數組208
7.1.3多個棧212
7.2改變一個數組的大小215
7.3數組的拷貝和復制219
7.4選擇數組元素222
7.5本章小結225
第8章搜索227
8.1比較227
8.1.1 C語言的標準比較函數227
8.1.2比較結構230
8.1.3比較數組232
8.1.4模糊化232
8.2搜索238
8.2.1未排序的整數數組238
8.2.2未排序的指針數組246
8.2.3排序的數組251
8.2.4鍊錶與二叉搜索樹257
8.3本章小結277
第9章排序279
9.1插入排序279
9.2希爾排序280
9.3冒泡排序285
9.4 Quicksort(快排) 286
9.5整數數組296
9.6標準C函數298
9.7本章小結301
第10章數值積分303
10.1從單變量函數開始303
10.2梯形規則306
10.3 Simpson規則310
10.4 Newton-Cotes公式313
10.5決定何時停止317
10.6奇點321
10.7蒙特卡洛324
10.8 3D積分329
10.8.1積分域330
10.8.2從2D的梯形到3D的棱柱331
10.8.3改進棱柱規則336
10.8.4將矩形規則轉換成3D 340
10.9多重積分的最後一些考慮342
10.10本章小結343
第11章嵌入式軟件345
11.1位操作346
11.2端349
11.3嵌入式環境351
11.3.1裸主板351
11.3.2實時OS(RTOS) 352
11.3.3高級OS 353
11.4信號和中斷353
11.5並發性365
11.6本章小結371
第12章數據庫373
12.1 MySQL 374
12.1.1使用CLI創建和填充一個數據庫374
12.1.2 MySQL Workbench 380
12.1.3在C程序中使用MySQL 382
12.2 SQLite 395
12.2.1在CLI中使用SQLite 398
12.2.2在C程序中使用SQLite 399
12.2.3使用動態字符串和數組404
12.3本章小結408
第13章使用Mongoose開發Web服務器409
13.1 Web頁面和協議409
13.2動態Web頁面413
13.3最簡單的支持Web服務器的應用程序413
13.3.1事件處理器函數415
13.3.2主程序416
13.4支持Web服務器的應用程序416
13.4.1靜態變量419
13.4 .2 main( ) 420
13.4.3 e_handler( )、get_x( )和send_response( ) 420
13.4.4 index.html 423
13.5定制Mongoose 428
13.6本章小結431
第14章遊戲應用:MathSearch 433
14.1 MathSearch規範和設計434
14.1.1 MathSearch規範434
14.1.2 MathSearch設計435
14.2實現MathSearch 437
14.3模塊:count 456
14.4模塊:display 457
14.5模塊:save_html 464
14.6模塊:save_images 470
14.7本章小結475
附錄A縮寫詞477
附錄B SQL介紹483
作者介紹
作者:Giulio Zambon
在Zambon的職業生涯中,他去過五個不同國家的八個城市,曾任軟件開發人員、系統顧問、過程改進經理、項目經理……。自2008年初以來,他致力於編寫軟件來生成和解決數字難題。
譯者:潘愛民
潘愛民,任職於阿里巴巴業務平台事業部。長期從事軟件和系統技術的研究與開發設計工作,撰寫了大量軟件技術文章,著譯了多部經典計算機圖書,在國內外學術刊物上發表了30多篇文章。曾任教於北京大學和清華大學(兼職),後進入工業界,先後任職於微軟亞洲研究院、盛大網絡發展有限公司和阿里巴巴集團。獲得了數學學士學位和計算機科學博士學位,主要研究領域包括軟件設計、信息安全、操作系統和互聯網技術。