21天學通Linux C編程

《21天學通Linux C編程》是2010年由電子工業出版社出版的書籍。

內容簡介

《21天學通Linux C編程》由淺入深、通俗易懂地講解了Linux系統下的C程式設計。全書共21章,從Linux系統安裝開始,講解了Linux常用命令、Shell編程、C語言基礎、指針與函式、C程式網路編程、圖形界面程式設計等內容。書中通過大量的實例來講解知識要點,讀者可以通過這些實例和練習系統地學習Linux下的C程式設計,提高自己的編程能力。《21天學通Linux C編程》共分7篇。第一篇為Linux基礎篇,介紹Linux編程平台的搭建及文本編輯器的使用;第二篇為shell編程篇,介紹Linux下的常用shell命令與shell編程;第三篇為C程式基礎篇,介紹C程式設計的基礎知識;第四篇為指針與函式篇,重點介紹C語言中指針與函式的概念和用法;第五篇為檔案與目錄篇,介紹C語言中的檔案與目錄操作功能;第六篇為網路編程篇,介紹網路編程的基礎知識和如何使用C語言進行網路編程;第七部分為圖形界面開發篇,介紹基於Linux的C程式圖形界面開發及Glade的使用。

《21天學通Linux C編程》語言通俗易懂,內容豐富,注重理解與實例,知識涵蓋面廣。非常適合C語言的初學者、高校學生、程式開發人員、Linux工作人員閱讀和學習。《21天學通Linux C編程》附贈DVD光碟1張,內容包括超大容量手把手教學視頻、電子教案(PPT)、編程參考寶典電子書、原始碼及各章習題答案。

目錄

第一篇 Linux基礎篇

第1章 Linux編程平台(教學視頻:64分鐘) 25

1.1 Linux發行版的介紹 25

1.1.1 Red Hat Linux 25

1.1.2 Debian Linux 25

1.2 安裝Linux 26

1.2.1 Linux的分區格式 26

1.2.2 在Windows系統中劃分Linux分區 26

1.2.3 安裝Red Hat 9.0 28

1.2.4 GRUB在Windows分區中引導Linux 35

1.3 VMware虛擬機安裝Linux系統 36

1.3.1 VMware軟體安裝 36

1.3.2 新建虛擬計算機 38

1.3.3 VMware的使用 41

1.3.4 在VMware虛擬機中安裝Linux系統 42

1.4 第一個C程式 43

1.4.1 在Linux中編寫C程式代碼 43

1.4.2 編譯程式 44

1.5 小結 44

1.6 習題 45

第2章 使用文本編輯器(教學視頻:39分鐘) 46

2.1 使用vim 46

2.1.1 啟動vim 46

2.1.2 在桌面上創建vim啟動器 47

2.1.3 vim的工作模式 47

2.1.4 保存與打開檔案 47

2.1.5 移動游標 48

2.1.6 插入操作 50

2.1.7 刪除操作 50

2.1.8 取消操作 51

2.1.9 保存操作 51

2.1.10 退出操作 52

2.1.11 查找操作 52

2.1.12 替換操作 52

2.1.13 選項設定 52

2.1.14 調用shell命令 53

2.2 vim使用實例 53

2.2.1 字元的插入與刪除 53

2.2.2 字元的查找與替換 54

2.3 gvim 55

2.3.1 檔案的新建與保存 55

2.3.2 查找與替換 55

2.4 gedit 56

2.4.1 gedit的啟動與打開文本 56

2.4.2 gedit編輯檔案 57

2.4.3 gedit列印檔案 58

2.4.4 gedit的首選項 59

2.5 小結 61

2.6 習題 61

第二篇 shell編程篇

第3章 Linux常用命令(教學視頻:59分鐘) 62

3.1 目錄與檔案命令 62

3.1.1 查看目錄命令pwd 62

3.1.2 切換目錄命令cd 62

3.1.3 查看目錄命令ls 63

3.1.4 建立檔案命令touch 64

3.1.5 建立與刪除資料夾命令mkdir、rmdir 65

3.1.6 檔案複製命令cp 65

3.1.7 檔案移動和更名命令mv 66

3.1.8 刪除檔案與目錄命令rm 66

3.1.9 創建連結命令ln 67

3.1.10 查看檔案信息命令wc 67

3.1.11 檔案查看命令cat 68

3.1.12 查看檔案視圖命令head與tail 68

3.1.13 檔案許可權設定命令chmod 69

3.1.14 查找檔案命令find 70

3.2 man系統幫助命令 70

3.2.1 man手冊的使用方法 71

3.2.2 幫助文檔的結構 71

3.3 小結 72

3.4 習題 72

第4章 shell編程(教學視頻:122分鐘) 74

4.1 bash的使用 74

4.1.1 bash的內部命令與外部命令 74

4.1.2 命令補齊功能 74

4.1.3 命令通配符 75

4.1.4 使用命令的歷史記錄 75

4.1.5 命令的別名 76

4.2 shell程式的基本結構 76

4.3 局部變數 77

4.4 環境變數 78

4.4.1 環境變數的查看 78

4.4.2 訪問環境變數 78

4.4.3 定義環境變數 78

4.4.4 在系統配置檔案中定義環境變數 79

4.4.5 位置變數 79

4.5 shell的運算符 80

4.5.1 變數賦值 80

4.5.2 算術運算符 80

4.6 輸入和輸出 82

4.6.1 echo命令輸出結果 82

4.6.2 read命令讀取信息 83

4.6.3 檔案重定向 84

4.7 引號的使用方法 85

4.7.1 雙引號 85

4.7.2 單引號 85

4.7.3 反引號 86

4.7.4 反斜線 86

4.8 測試語句 86

4.8.1 檔案狀態測試 87

4.8.2 數值測試 87

4.8.3 字元串測試 88

4.8.4 邏輯測試 89

4.9 流程控制結構 89

4.9.1 if語句 89

4.9.3 for語句 90

4.9.5 until語句 91

4.10 綜合練習 92

4.10.1 程式的功能 92

4.10.2 編寫程式的代碼 92

4.11 小結 94

4.12 習題 94

第三篇 C程式基礎篇

第5章 編譯與調試(教學視頻:49分鐘) 95

5.1 編譯的概念和理解 95

5.1.1 程式編譯的過程 95

5.1.2 編譯器 95

5.2 gcc編譯器 96

5.2.1 gcc編譯器簡介 96

5.2.2 gcc對源程式擴展名的支持 96

5.3 C程式的編譯 97

5.3.1 編寫第一個C程式 97

5.3.2 用gcc編譯程式 98

5.3.3 查看gcc的參數 99

5.3.4 設定輸出的檔案 100

5.3.5 查看編譯過程 100

5.3.6 設定編譯的語言 101

5.3.7 設定ANSIC標準 101

5.3.8 編譯C++程式 101

5.4 編譯過程的控制 102

5.4.1 編譯過程簡介 102

5.4.2 控制預處理過程 103

5.4.3 生成彙編代碼 103

5.4.4 生成目標代碼 104

5.4.5 連結生成執行檔 104

5.5 gdb調試程式 105

5.5.1 gdb簡介 105

5.5.2 在程式中加入調試信息 105

5.5.4 啟動gdb 105

5.5.5 載入需要調試的程式 106

5.5.6 查看代碼 106

5.5.7 在程式中加入斷點 106

5.5.8 查看斷點 107

5.5.9 運行程式 107

5.5.10 變數的查看 108

5.6 gdb的幫助與常用命令 109

5.6.1 使用gdb幫助 109

5.6.2 gdb常用命令 109

5.7 編譯程式常見的錯誤與問題 110

5.7.1 邏輯錯誤與語法錯誤 110

5.7.2 C程式中的錯誤與異常 110

5.7.3 編譯中的警告提示 111

5.7.4 找不到包含檔案的錯誤 111

5.7.5 錯誤地使用逗號 111

5.7.6 括弧不匹配錯誤 111

5.8 綜合練習 112

5.8.1 編寫程式 112

5.8.2 編譯檔案 113

5.8.3 調試程式 113

5.9 小結 115

5.10 習題 115

第6章 C語言基礎(教學視頻:70分鐘) 117

6.1 C程式的基本概念 117

6.1.1 C程式的基本結構 117

6.1.2 C程式的一般格式 118

6.1.3 C程式中的注釋 119

6.2 數據類型 119

6.2.1 整型(int) 119

6.2.2 浮點型(float) 120

6.2.3 字元型(char) 121

6.2.4 變數名 122

6.2.5 字元NULL 123

6.3 變數的賦值與輸出 123

6.3.1 變數的賦值 123

6.3.2 printf函式輸出變數 123

6.3.3 scanf函式從鍵盤讀入變數 125

6.4 運算符 126

6.4.1 算術運算符 126

6.4.2 關係運算符 127

6.4.3 邏輯運算符 128

6.5 綜合練習 129

6.6 小結 130

6.7 習題 130

第7章 C程式的常用語句(教學視頻:87分鐘) 132

7.1 流程控制語句 132

7.1.1 if條件語句 132

7.1.2 if語句的嵌套 133

7.1.3 switch選擇執行語句 135

7.1.4 for循環語句 137

7.1.5 for循環的嵌套 138

7.1.6 for循環套用實例:輸出九九乘法口訣表 140

7.1.7 while循環語句 140

7.1.8 do while循環語句 141

7.1.9 轉移控制語句:continue 142

7.1.10 轉移控制語句:break 143

7.1.11 轉移控制語句:return 144

7.2 兩種特殊語句結構 144

7.2.1 三元操作符 145

7.2.2 塊語句 145

7.3 綜合練習 146

7.4 小結 147

7.5 習題 147

第四篇 指針與函式篇

第8章 數組與指針(教學視頻:66分鐘) 149

8.1 數組的理解與操作 149

8.1.1 什麼是數組 149

8.1.2 數組的定義與訪問 150

8.1.3 數組使用實例 151

8.2 指針 152

8.2.1 指針的理解 152

8.2.2 指針操作符 152

8.2.3 指針的定義與訪問 152

8.2.4 指針使用實例 153

8.3 數組與指針 154

8.3.1 數組與指針的關係 154

8.3.2 指針的算術運算 155

8.3.3 字元數組與字元串 156

8.4 二維數組與多維數組 157

8.4.1 二維數組的理解 157

8.4.2 二維數組與指針 158

8.5 實例 159

8.5.1 學生成績統計實例 159

8.5.2 冒泡法排序實例 160

8.5.3 統計字元串中字元 162

8.6 小結 164

8.7 習題 164

第9章 函式(教學視頻:67分鐘) 166

9.1 函式的理解 166

9.1.1 什麼是函式 166

9.1.2 系統函式與庫函式 167

9.1.3 函式的返回值 168

9.1.4 無參函式 169

9.1.5 有參函式 169

9.1.6 函式參數實例 170

9.2 自定義函式 171

9.2.1 自編寫定義函式 171

9.2.2 函式中調用函式 172

9.2.3 函式的聲明 174

9.2.4 遞歸函式 175

9.2.5 main函式的參數argc與argv 176

9.3 函式與指針 177

9.3.1 值調用與引用調用 177

9.3.2 引用調用與指針 178

9.3.3 指針參數簡單實例 179

9.3.4 自定義函式中指針使用實例 180

9.3.5 數組作為參數 181

9.3.6 數組作為函式參數實例 182

9.4 返回值 183

9.4.1 函式返回值的類型 183

9.4.2 函式返回指針 184

9.4.3 函式返回指針實例 185

9.4.4 函式返回結果到參數 186

9.5 綜合練習 186

9.6 小結 187

9.7 習題 188

第10章 字元與字元串處理(教學視頻:66分鐘) 190

10.1 字元測試函式 190

10.1.1 數字或字母測試函式isalnum 190

10.1.2 字母測試函式isalpha 191

10.1.3 可列印字元測試函式isgraph 192

10.1.4 測試大小寫字母函式islower和isupper 193

10.1.5 測試是否是數字isxdigit 193

10.1.6 測試字元是否為符號函式ispunct 194

10.1.7 其他字元測試函式 195

10.2 字元測試函式綜合實例 195

10.3 字元串轉換 197

10.3.1 C程式中的字元串 197

10.3.2 字元串轉換成浮點型函式atof 197

10.3.3 字元串轉換成整型函式atoi 198

10.3.4 字元串轉換成長整型函式atol 199

10.3.5 將浮點型轉換成字元串函式ecvt 200

10.3.6 字母的大寫小轉換函式tolower和toupper 201

10.3.7 其他字元串轉換函式 202

10.4 字元串比較 203

10.4.1 字元串比較函式bcmp 203

10.4.2 字元串大小比較函式memcmp 204

10.4.3 忽略大小寫比較字元串函式strncasecmp 204

10.5 字元串複製 205

10.5.1 字元串複製函式bcopy 205

10.5.2 字元串複製函式memccpy 206

10.5.3 複製字元串函式strcpy 207

10.5.4 字元串複製函式strncpy 208

10.6 字元串的清理與填充 208

10.6.1 字元串清理函式bzero 209

10.6.2 字元串填充函式memset 209

10.7 字元串查找 210

10.7.1 字元查找函式index與rindex 210

10.7.2 字元查找函式memchr 211

10.7.3 字元查找函式strchr與strrchr 211

10.8 字元串的連線與分割 212

10.8.1 字元串連線函式strcat 212

10.8.2 字元串分割函式strtok 213

10.9 綜合練習 214

10.10 小結 216

10.11 習題 216

第11章 結構體(教學視頻:49分鐘) 218

11.1 結構體的操作 218

11.1.1 結構體的理解 218

11.1.2 結構體的定義 218

11.1.3 結構體的訪問 220

11.1.4 結構體數組 222

11.1.5 結構體使用實例 222

11.2 結構體與指針 224

11.2.1 結構體指針的定義 225

11.2.2 結構體指針的訪問 225

11.2.3 結構體作為函式的參數 227

11.2.4 結構體指針作為函式的參數 228

11.2.5 結構體作為函式的返回值 230

11.2.6 結構體指針作為函式的返回值 231

11.3 綜合練習 233

11.3.1 程式的需求分析 233

11.3.2 程式中的函式 234

11.3.3 程式中的結構體與全局變數 234

11.3.4 頭檔案和函式聲明 234

11.3.5 定義結構體和全局變數 235

11.3.6 顯示學生信息的函式 235

11.3.7 程式的選擇選單 235

11.3.8 學生信息輸入函式 237

11.3.9 按姓名查找函式 237

11.3.10 刪除學生函式 238

11.3.11 按年齡查找函式 238

11.3.12 按身高查找函式 239

11.3.13 按性別查找函式 240

11.3.14 程式的主函式 240

11.3.15 程式的運行和調試 242

11.4 小結 243

11.5 習題 243

第12章 時間函式(教學視頻:23分鐘) 245

12.1 常用時間函式 245

12.1.1 返回時間函式time 245

12.2.2 取當前時間函式gmtime 246

11.2.3 字元串格式時間函式ctime 248

12.2.4 字元串格式時間函式asctime 249

12.1.5 取得當地時間函式localtime 250

12.1.6 將時間轉換成秒數函式mktime 251

12.1.7 取得目前的時間函式gettimeofday 251

12.1.8 設定當前時間函式settimeofday 253

12.2 綜合練習 254

12.3 小結 254

12.4 習題 255

第五篇 檔案與目錄篇

第13章 目錄與檔案(教學視頻:115分鐘) 256

13.1 檔案操作的許可權 256

13.2 錯誤處理與錯誤號 257

13.2.1 錯誤定義的理解 257

13.2.2 用錯誤常數顯示錯誤信息 258

13.2.3 用錯誤序號顯示錯誤信息 259

13.3 創建與刪除目錄 259

13.3.1 創建目錄函式mkdir 260

13.3.2 刪除目錄函式rmdir 261

13.4 檔案的創建與刪除 262

13.4.1 創建檔案函式creat 262

13.4.2 刪除檔案函式remove 263

14.4.3 建立臨時檔案函式mkstemp 264

13.5 檔案的打開與關閉 265

13.5.1 打開檔案函式open 266

13.5.2 檔案打開方式的設定 266

13.5.3 打開檔案的許可權 266

13.5.4 檔案打開實例 266

13.5.5 關閉檔案函式close 267

13.6 檔案讀寫 269

13.6.1 在檔案中寫字元串函式write 269

13.6.2 讀取檔案函式read 270

13.6.3 檔案讀寫位置的移動 272

13.6.4 將緩衝區數據寫入到磁碟函式sync 273

13.6.5 將緩衝區數據寫入到磁碟函式fsync 275

13.7 檔案鎖定 276

13.7.1 檔案鎖定的理解 276

13.7.2 檔案鎖定函式flock 277

13.7.3 檔案鎖定函式fcntl 278

13.7.4 檔案鎖定函式fcntl使用實例 279

13.8 檔案的移動與複製 281

13.8.1 檔案的移動函式rename 281

13.8.2 rename函式使用實例 281

13.8.3 檔案複製實例 282

13.9 綜合練習 283

13.9.1 程式功能分析 284

13.9.2 程式的函式 284

13.9.3 包含檔案 284

13.9.4 數據的定義 285

13.9.5 選單函式 285

13.9.6 顯示電話信息函式 286

13.9.7 添加電話號碼函式 286

13.9.8 按姓名查找函式 287

13.9.9 刪除電話號碼函式 287

13.9.10 保存到檔案函式 288

13.9.11 從檔案導入信息函式 288

13.9.12 主函式 289

13.10 小結 291

13.11 習題 291

第14章 檔案I/O(教學視頻:42分鐘) 293

14.1 檔案的打開與關閉 293

14.1.1 檔案打開函式fopen 293

14.1.2 檔案打開函式fdopen 295

14.1.3 打開檔案函式freopen 296

14.1.4 關閉檔案函式fclose 297

14.2 檔案的讀寫 298

14.2.1 字元寫入函式putc與fputc 298

14.2.2 向檔案中寫入字元串函式fputs 299

14.2.3 數據寫入函式fwrite 300

14.3 綜合練習 300

14.4 小結 302

14.5 習題 302

第六篇 網路編程篇

第15章 網路編程(教學視頻:71分鐘) 303

15.1 網路編程的基本概念 303

15.1.1 IP位址 303

15.1.2 連線埠 304

15.1.3 域名 304

15.1.4 TCP與UDP 304

15.2 套接字 305

15.2.1 什麼是套接字 305

15.2.2 套接字相關的數據類型 305

15.2.3 套接字類型 306

15.3 域名與IP位址 306

15.3.1 用域名取得主機的IP位址 306

15.3.2 用IP位址返回域名 308

15.4 網路協定 309

15.4.1 由協定名取得協定數據 309

15.4.2 由協定編號取得協定信息 311

15.4.3 取得系統支持的所有協定 312

15.5 網路服務 313

15.5.1 取得系統支持的網路服務 313

15.5.2 用名稱取得系統所支持的服務 314

15.5.3 由連線埠取得服務名稱 316

15.6 網路地址的轉換 317

15.6.1 將網路地址轉換成整型 317

15.6.2 將長整型數地址轉換成網路地址 318

15.6.3 主機字元順序與網路字元順序的轉換 319

15.7 錯誤處理 319

15.7.1 herror函式顯示錯誤 319

15.7.2 捕獲錯誤編號 320

15.8 綜合練習 321

15.9 小結 321

15.10 習題 322

第16章 無連線的套接字通信(教學視頻:22分鐘) 323

16.1 socket套接字 323

16.1.1 建立socket 323

16.1.2 取得socket狀態 325

16.1.3 設定socket狀態 326

16.2 無連線的套接字通信 327

16.2.1 工作流程 328

16.2.1 信息傳送函式sendto 328

16.2.2 信息接收函式recvfrom 329

16.3 綜合練習 329

16.3.1 無連線套接字通信客戶端 329

16.3.2 無連線套接字通信伺服器 331

16.3.3 測試UDP通信程式 332

16.4 小結 333

16.5 習題 333

第17章 面向連線的套接字通信(教學視頻:76分鐘) 335

17.1 面向連線的套接字通信工作流程 335

17.2 綁定連線埠 336

17.2.1 綁定連線埠函式bind 336

17.2.2 bind函式綁定連線埠實例 337

17.3 監聽與連線 338

17.3.1 等待監聽函式listen 338

17.3.2 listen函式使用實例 338

17.3.3 接受連線函式accept 340

17.3.4 accept函式使用實例 340

17.3.5 請求連線函式connet 342

17.3.6 connet函式使用實例 342

17.4 數據的傳送與接收 343

17.4.1 數據接收函式recv 343

17.4.2 recv函式使用實例 344

17.4.3 信息傳送函式send 345

17.4.4 數據傳輸函式write與read 346

17.4.5 read函式接收數據實例 346

17.5 綜合練習 348

17.5.1 伺服器程式 348

17.5.2 客戶端程式 350

17.5.3 實例程式測試 352

17.6 小結 352

17.7 習題 353

第七篇 圖形界面開發篇

第18章 Linux圖形界面開發基礎(教學視頻:28分鐘) 354

18.1 X Window系統簡介 354

18.1.1 X Window的歷史 354

18.1.2 X Window體系結構 355

18.2 Linux桌面環境 355

18.2.1 KDE 355

18.2.2 GNOME 356

18.3 Linux下的圖形程式開發環境 357

18.3.1 GTK+簡介 357

18.3.2 yum安裝GTK 357

18.3.3 用軟體包管理器安裝GTK 358

18.4 常見問題 359

18.4.1 找不到gtk.h包含檔案的錯誤 359

18.4.2 pkg-config參數有什麼作用 359

18.5 綜合練習 359

18.5.1 編寫程式代碼 359

18.5.2 編譯程式 360

18.5.3 運行程式 361

18.6 小結 361

18.7 習題 361

第19章 圖形界面編程(教學視頻:35分鐘) 363

19.1 視窗 363

19.1.1 最簡單的視窗程式 363

19.1.2 視窗的構建過程 364

19.1.3 開新視窗函式gtk_window_new 364

19.1.4 設定視窗的標題 365

19.1.5 設定視窗的大小與位置 366

19.2 標籤 367

19.2.1 建立一個標籤 367

19.2.2 將標籤添加到視窗中 367

19.2.3 設定與獲取標籤的文本 368

19.3 按鈕 369

19.3.1 添加一個按鈕 370

19.3.2 取得與設定按鈕的標籤 371

19.4 文本框 372

19.4.1 建立文本框 372

19.4.2 獲取與設定文本框數據 373

19.5 綜合練習 374

19.6 小結 375

19.7 習題 375

第20章 界面布局(教學視頻:67分鐘) 377

20.1 表格 377

20.1.1 表格的建立 377

20.1.2 表格中添加元件 378

20.1.3 表格使用實例 379

20.1.4 單元格的合併 380

20.1.5 表格中添加表格 381

20.2 垂直框 383

20.2.1 添加垂直框 383

20.2.2 垂直框中添加元件 384

20.3 水平窗格 385

20.3.1 新建一個窗格 385

20.3.2 窗格中添加元件 387

20.4 Glade 388

20.4.1 Glade簡介 388

20.4.2 使用Glade設計程式界面 388

20.4.3 Glade設計視窗 389

20.4.4 添加表格 392

20.4.5 添加標籤 392

20.4.6 添加文本框 395

20.4.7 添加按鈕 396

20.4.8 添加信號與事件 397

20.4.9 Glade實例 398

20.5 綜合練習 399

20.6 小結 400

20.7 習題 401

第21章 信號與事件(教學視頻:18分鐘) 403

21.1 信號 403

21.1.1 添加信號 403

21.1.2 事件函式的參數 404

21.1.3 在函式中使用全局變數 405

21.2 GTK事件 407

21.3 實例:加法計算器 407

21.3.1 程式功能的分析 407

21.3.2 程式實現 407

21.4 綜合練習 409

21.4.1 程式的功能分析 409

21.4.2 程式的功能模組 410

21.4.3 包含頭檔案與定義全局變數 411

21.4.4 單擊按鈕輸入函式 411

21.4.5 加法運算函式 411

21.4.6 減法運算函式 412

21.4.7 乘法運算函式 413

21.4.8 除法運算函式 413

21.4.9 輸入小數點函式 414

21.4.10 清除數據函式 414

21.4.11 界面構建函式 414

21.4.12 添加事件函式 416

21.4.13 主函式 417

21.4.14 程式的編譯和運行 417

21.5 小結 418

21.6 習題 418

相關詞條

相關搜尋

熱門詞條

聯絡我們