第1章 C语言简介 1
1.1 什么是C语言 1
1.2 C语言简介 2
1.3 第一个C程序 6
1.4 编译和执行 9
1.5 接收输入 10
1.6 C语言指令 11
1.7 C语言的控制指令 19
1.8 小结 19
1.9 练习 19
第2章 判断控制结构 26
2.1 判断 26
2.2 if语句 26
2.3 if-else语句 30
2.4 使用逻辑运算符 33
2.5 注意事项 39
2.6 条件运算符 41
2.7 小结 42
2.8 练习 42
第3章 循环控制结构 54
3.1 循环 54
3.2 while循环 54
3.3 for循环 60
3.4 特殊循环 64
3.5 break语句 66
3.6 continue语句 67
3.7 do-while循环 68
3.8 小结 69
3.9 练习 69
第4章 case控制结构 76
4.1 用switch判断 76
4.2 switch与多重if-else的对比 81
4.3 goto语句 82
4.4 小结 83
4.5 练习 84
第5章 函数与指针 88
5.1 什么是函数 88
5.2 在函数间传递值 93
5.3 函数的作用域规则 95
5.4 函数调用约定 96
5.5 函数调用的不确定性 97
5.6 函数的高级特性 97
5.7 将函数添加到库 109
5.8 小结 111
5.9 练习 111
第6章 再论数据类型 120
6.1 长整型和短整型 120
6.2 有符号和无符号整型 121
6.3 有符号和无符号字符 122
6.4 浮点数和双精度数 123
6.5 关于数据类型的更多说明 124
6.6 数据的存储类型 125
6.7 小结 133
6.8 练习 133
第7章 C语言预处理器 138
7.1 C语言预处理器的特性 138
7.2 宏指令扩展 138
7.3 文件包含 143
7.4 条件编译 144
7.5 #if和#elif指令 146
7.6 其他指令 147
7.7 建立进程 149
7.8 小结 152
7.9 练习 152
第8章 数组 156
8.1 什么是数组 156
8.2 更多关于数组的知识 158
8.3 指针与数组 161
8.4 二维数组 167
8.5 指针数组 173
8.6 三维数组 174
8.7 小结 176
8.8 练习 176
第9章 字符串处理 190
9.1 什么是字符串 190
9.2 关于字符串的补充说明 190
9.3 指针与字符串 193
9.4 标准库中的字符串函数 194
9.5 二维字符数组 199
9.6 字符串指针数组 201
9.7 字符串指针数组的限制 203
9.8 小结 204
9.9 练习 204
第10章 结构 209
10.1 为什么使用结构 209
10.2 结构数组 213
10.3 结构的其他特性 215
10.4 结构的使用 220
10.5 小结 221
10.6 练习 221
第11章 控制台输入/输出 226
11.1 输入/输出的类型 226
11.2 控制台输入/输出函数 226
11.3 小结 234
11.4 练习 234
第12章 文件输入/输出 238
12.1 数据的组织 238
12.2 文件操作 238
12.3 统计字符、制表符、空格 242
12.4 文件复制程序 242
12.5 文件打开模式 243
12.6 文件中的字符串读写 244
12.7 在文件中记录I/O 246
12.8 文本文件与二进制文件 248
12.9 再论记录I/O 250
12.10 数据库管理 252
12.11 底层磁盘I/O 256
12.12 Windows下的I/O 259
12.13 小结 259
12.14 练习 260
第13章 关于输入/输出的更多话题 267
13.1 使用argc和argv 267
13.2 检测读/写时的错误 269
13.3 标准I/O设备 270
13.4 I/O重定向 271
13.5 小结 273
13.6 练习 274
第14章 位操作 275
14.1 位运算符 275
14.2 showbits()函数 285
14.3 十六进制 285
14.4 二进制与十六进制的关系 286
14.5 小结 287
14.6 练习 287
第15章 各种特性 290
15.1 枚举数据类型 290
15.2 用typedef重命名数据类型 292
15.3 类型转换 294
15.4 位字段 295
15.5 函数指针 296
15.6 返回指针的函数 297
15.7 参数数量可变的函数 298
15.8 联合 301
15.9 可变(变量)修饰符 306
15.10 小结 307
15.11 练习 307
第16章 Windows下的C语言编程 310
16.1 Windows的特点 310
16.2 Windows编程的主要特性 310
16.3 各种编程方法的差异 313
16.4 第一个Windows程序 315
16.5 匈牙利命名法 317
16.6 消息框的角色 317
16.7 设计窗口 318
16.8 更多Windows编程 320
16.9 真实的窗口例子 320
16.10 程序实例 324
16.11 小结 324
16.12 练习 325
第17章 Windows下的图形编程 326
17.1 常用的图形设备 326
17.2 独立于设备绘制图形 326
17.3 “Hello Windows”实例 327
17.4 绘制形状 329
17.5 画笔的类型 331
17.6 画刷的类型 332
17.7 手绘和画刷风格 334
17.8 深入探讨设备环境 337
17.9 显示位图 338
17.10 动画 340
17.11 Windows编程永无止境 343
17.12 小结 344
17.13 练习 344
第18章 Internet编程 346
18.1 网络通信 346
18.2 包与套接字 347
18.3 预备知识 347
18.4 开始Internet编程 349
18.5 获取时间 351
18.6 与Whois服务器通信 355
18.7 获取主页 357
18.8 发送和接收电子邮件 358
18.9 双向通信 366
18.10 小结 370
18.11 练习 370
第19章 Linux下的C语言编程 371
19.1 什么是Linux 371
19.2 Linux下的C语言编程 372
19.3 “Hello Linux”程序 372
19.4 进程 373
19.5 父进程和子进程 374
19.6 更多的进程 376
19.7 僵尸进程和孤儿进程 376
19.8 一个有趣的现象 378
19.9 小结 378
19.10 练习 379
第20章 更多Linux编程 380
20.1 用信号通信 380
20.2 处理多个信号 381
20.3 注册共同的句柄 382
20.4 阻止信号 383
20.5 事件驱动编程 385
20.6 学习更多Linux编程知识 387
20.7 小结 388
20.8 练习 388
附录A 优先级表 389
附录B 库函数 390
附录C 捕捉错误 395
附录D ASCII表 399
附录E Helper.h文件 401
附录F 安装Linux 402