前言 1
第1章 几个重要问题 1
1.1 数据类型转换 1
1.1.1 各类整数之间的转换 1
目录 1
1.1.2 实数与整数之间的转换 2
1.1.3 指针之间的转换 3
1.2 指针 3
1.2.1 指针说明 3
1.2.2 指针与地址 3
1.2.3 指针运算 4
1.2.4 指针分类 4
1.2.4.1 近(near)指针 5
1.2.4.2 远(far)指针 5
1.2.4.3 巨(huge)指针 6
1.3 函数 7
1.3.1 有返回值的函数 7
1.2.5 各类指针之间的转换 7
1.2.4.4 基(based)指针 7
1.3.2 无返回值的函数 8
1.3.3 修改参数的函数 8
1.3.4 递归函数 9
1.3.5 参数个数不定的函数 9
1.3.6 函数指针及其应用 10
第2章 编译模式和内存组织 14
2.1 段与偏移量 14
2.2.1 概述 16
2.2 六种编译模式 16
2.2.2 微模式 18
2.2.3 小模式 19
2.2.4 中模式 20
2.2.5 紧凑模式 20
2.2.6 大模式 20
2.2.7 巨模式 20
2.3 堆栈的组织 20
2.4 堆的组织 22
2.5 其它内存操作函数 24
3.1 鼠标驱动程序的基本功能 26
第3章 鼠标输入 26
3.2 与鼠标接口的C函数工具包 27
3.2.1 14个工具函数 27
3.2.2 工具包应用举例 36
3.3 Turbo C Tools的鼠标支持函数 38
3.3.1 鼠标的初始化 39
3.3.2 询问鼠标的状态 39
3.3.3 鼠光标的位置和速度控制 41
3.3.4 鼠光标的形状和开关控制 42
3.3.5 对鼠标硬件中断的处理 43
第4章 文本屏幕输出和文本窗口 45
4.1 概述 45
4.2 Turbo C的文本屏幕处理 46
4.2.1 文本输出与操作 47
4.2.1.1 TTY输出规则 47
4.2.1.2 输出文本 47
4.2.1.3 对屏幕内容和光标的操作 47
4.2.1.4 屏幕与内存之间文本的移动 48
4.2.2 窗口和显示方式控制 48
4.2.3 属性控制 49
4.2.4 状态查询 51
4.3 pop__up文本窗口工具包 52
4.3.1 窗口结构和窗口栈 53
4.3.2 16个工具函数 54
4.3.3 工具包应用实例 65
4.3.3.1 用“瓷砖”式窗口制作菜单 65
4.3.3.2 移动pop__up窗口 67
4.3.3.3 pop__up错误信息和正常信息 70
4.4.1 Turbo C Tools与 Turbo C的比较 77
4.4 Turbo C Tools的文本屏幕处理 77
4.4.2 显示设备和显示方式 78
4.4.3 页控制 80
4.4.4 清除和滚动 81
4.4.5 光标控制 82
4.4.6 显示属性和颜色 83
4.4.7 屏幕写入和读取 84
4.4.8 矩形区域写入和读取 85
4.4.9 各种文本输出函数的速度比较 88
4.5.1 概述 89
4.5 Turbo C Tools的窗口处理 89
4.5.2 建立和注销窗口 91
4.5.3 显示和关闭窗口 93
4.5.4 窗口控制和状态 95
4.5.5 清除和滚动 97
4.5.6 光标位置查询和控制 98
4.5.7 属性控制 98
4.5.8 窗口输出/输入 98
4.5.9 虚拟窗口 103
4.6 Turbo C Tools的帮助信息窗口 106
4.5.10 常驻内存的窗口程序 106
4.6.1 帮助信息源文件 107
4.6.2 缺省帮助信息窗口 108
4.6.3 帮助函数 109
第5章 键盘输入、菜单和编辑 112
5.1 Turbo C的键盘输入 112
5.1.1 概述 112
5.1.2 控制台级(conio)键盘输入处理 113
5.1.4 普通文件级键盘输入处理 116
5.1.3 标准文件级键盘输入处理 116
5.1.5 BIOS级键盘输入处理 117
5.1.5.1 中断0×9 117
5.1.5.2 中断0×16 118
5.1.5.3 bioskey函数 118
5.2 〈Ctrl Break〉和〈Ctrl C〉 119
5.3 Turbo C Tools的键盘处理 120
5.3.1 键盘输入 120
5.3.2 缓冲区处理 121
5.3.3 状态控制键 124
5.3.4 使用加强键盘 125
5.3.5 使用键控制函数 125
5.3.6 取得键码 126
5.4 Turbo C Tools的菜单处理 126
5.4.1 概述 126
5.4.2 建立、显示和注销菜单 129
5.4.3 定义菜单项和按键鼠标事件 130
5.4.4 读取用户的选择 132
5.4.5.1 [例1]:一个简单演示程序 134
5.4.5 菜单应用举例 134
5.4.5.2 [例2]:用菜单实现电子表格 135
5.5 Turbo C Tools的域编辑 140
5.5.1 概述 140
5.5.2 域编辑 144
5.5.3 编辑键定义 146
第6章 基本文件处理 149
6.1 目录/文件系统概述 150
6.1.1 文件存取级别 150
6.1.2 文件属性 151
6.2 系统级输入/输出 152
6.2.1 文件柄 152
6.2.2 文件柄存取字节 153
6.2.3 文件柄属性字节 154
6.2.4 文件出错处理 155
6.2.5 建立文件 155
6.2.6 打开文件 157
6.2.7 读取和设置文件的特性 158
6.2.8 读、写和关闭文件 159
6.3.1 FILE数据结构 160
6.3 标准级(流式)输入输出 160
6.3.2 建立/打开/关闭/删除文件 162
6.3.3 取文件状态和出错处理 164
6.3.4 控制文件缓冲区 164
6.3.5 移动文件指针 166
6.3.6 字节级的读/写 167
6.3.7 字符串级的读/写 168
6.3.8 记录级的读/写 168
6.4 基本文件处理工具包 169
6.4.1 10个工具函数 169
6.5.1 驱动器和驱动器信息 175
6.4.2 工具包应用 175
6.5 驱动器和目录操作 175
6.5.2 目录操作 177
6.5.3 文件名操作 178
6.5.4 目录搜索 178
第7章 字符串处理 182
7.1 字符 182
7.1.1 字符数据和常数 182
7.1.2 字符输入/输出 183
7.1.4 宏和宏的副作用 184
7.1.3 字符的分类和转换 184
7.2 字符串 186
7.3 字符串的分析 187
7.4 字符串的综合 191
7.5 字符串的操作 193
7.6 文本字符串 196
7.7 数字字符串 197
7.8 国家和货币字符串 202
7.9 日期和时间字符串 204
7.10 文件名字符串 208
7.11 命令行字符串 209
7.12 环境字符串 209
7.13 错误级字符串 210
7.14 字符串处理工具包 211
7.14.1 13个工具函数 211
7.14.2 工具包应用举例:PASCAL程序翻译为C程序 215
第8章 动态通用串处理 223
8.1 动态字符串 223
8.2 动态通用串 225
8.3 动态通用串工具包 227
8.3.1 8个工具函数 227
8.3.2 工具包应用举例:多边形表示法 232
8.4 通用串的排序与查找 234
8.5 动态通用串与链表的比较 242
第9章 高级文件处理 244
9.1 变长记录(VLR)文件 244
9.1.1 从文件中查找一个记录 244
9.1.3 碎片化问题 245
9.1.2 插入和删除记录 245
9.1.4 VLR文件格式 246
9.1.5 VLR记录格式和数据块格式 246
9.2 VLR工具包 247
9.2.1 7个工具函数 247
9.2.2 索引处理 255
9.2.3 工具包应用举例:制作和显示幻灯片 256
第10章 内存和程序管理 264
10.1 PSP和环境 264
10.1.1 PSP 264
10.1.2 环境 265
10.2 内存管理 267
10.2.1 内存块及其控制 267
10.2.2 内存分布映像程序memrymap 268
10.2.3 内存管理函数 270
10.3 多个程序的执行及通信 270
10.3.1 程序间的通信 270
10.3.2 spawn:调用子进程 271
10.3.3 exec:转到子进程 275
10.3.4 system:执行DOS命令 275
10.3.5 signal和raise:事件处理 276
10.4 标准输入/输出重定向 278
10.4.1[例1]:freopen.dem 279
10.4.2[例2]:dup.dem 280
10.4.3[例3]:利用system 282
10.5 程序的终止 282
第11章 MSC 6.0的基指针技术 287
11.1 6种基(Based)指针 287
11.1.1 变量值基指针 287
11.1.3 不定基指针 289
11.1.2 变量地址基指针 289
11.1.4 段名基指针 290
11.1.5 指针基指针 291
11.1.6 自参照基指针 291
11.2 基指针应用于链表管理的工具包 292
11.2.1 基指针应用于链表管理 292
11.2.2 基指针分配函数 293
11.2.3 16个工具函数 294
11.2.4.1 [例1] 304
11.2.4 工具包应用三例 304
11.2.4.2 [例2]和[例3] 305
第12章 与BIOS和DOS的接口 309
12.1 中断概述 309
12.2 与BIOS的接口 312
12.2.1 与BIOS接口的函数 312
12.2.2 BIOS提供的部分服务 314
12.3 与DOS的接口 317
12.3.1 与DOS接口的函数 317
12.3.2 DOS提供的部分服务 318
12.4.1 BIOS提供的显示服务 319
12.4 标准输入/输出服务 319
12.4.2 BIOS提供的键盘服务 320
12.4.3 DOS提供的标准输入/输出服务 320
12.5 文件输入/输出服务 321
12.6 内存管理与程序执行服务 322
12.7 打印服务 323
12.8 时钟/日历服务 325
12.8.1 PC机上的时钟系统 325
12.8.4 延迟函数 326
12.8.3 DOS的时间/日历服务 326
12.8.2 PC/AT机上的时钟系统 326
12.8.5 声音函数 327
12.9 串行通信服务 327
12.10 错误处理服务 328
12.10.1 DOS怎样报告错误 328
12.10.2 Turbo C库函数的错误报告特性 329
12.10.3 致命错 331
12.10.4 〈Ctrl Break〉和〈Ctrl C〉 331
13.1 一般概念 333
第13章 中断服务程序 333
13.2 用Turbo C Tools写中断服务程序 335
13.2.1 工作原理 335
13.2.2 安装和驻留 339
13.2.3 过滤 342
13.2.4 探测和撤消 342
13.2.5 其它 343
13.3 中断服务程序实例 344
13.3.1 [例1]:周期性地发声 344
13.3.2 [例2]:检测A和J键的同时按下 345
13.3.3 [例3]:发送格式化的输出 349
13.4 用Turbo C Tools写插入服务程序 353
13.4.1 DOS的重入问题 353
13.4.2 插入服务技术 354
13.4.3 插入服务函数 358
13.4.4 插入服务程序举例 362
13.5 用Turbo C写中断服务程序 366
14.1.1 概述 369
14.1.2 图形系统控制函数 369
14.1 Turbo C图形处理函数 369
第14章 图形处理 369
14.1.3 画图和填充函数 373
14.1.4 屏幕和视口管理函数 375
14.1.5 图形方式下的文本输出函数 376
14.1.6 颜色控制函数 378
14.1.7 错误处理函数 380
14.1.8 状态查询函数 380
14.2.1 图形窗口与文本窗口 381
14.2 Pop up图形窗口工具包 381
14.2.2 6个工具函数 382
14.2.3 工具包应用举例:移动窗口 389
14.3 图形方式下输出文本的若干问题 392
14.3.1 格式输出 392
14.3.2 重写 393
14.3.3 加亮 395
14.3.4 滚动 396
14.4 用XOR方式画旋转橡皮筋 396
15.1.2 说明一个函数为near或far 400
15.1.1 概述 400
15.1 混合模式编程 400
第15章 混合模式和混合语言编程 400
15.1.3 说明一个指针为near、far或huge 401
15.1.4 使用库文件 402
15.1.5 不同编译模式所生成模块的连接 403
15.2 C和汇编语言混合编程 404
15.2.1 段的组合 404
15.2.1.1 汇编语言的段和组 404
15.2.1.2 Trubo C的段和组 405
15.2.1.3 段和组的连接 407
15.2.2 变量和函数名的相互引用 408
15.2.3 参数传递规则 409
15.2.4 返回值传递规则 410
15.2.5 寄存器规则 411
15.2.6 混合编程示例 411
15.2.6.1 C调用汇编 411
15.2.6.2 汇编调用C 412
15.3 行内汇编 414
附录1 操作符表 417
附录2 键盘码表 419
附录3 Turbo C 2.0函数简表 422
附录4 Turbo C Tools 6.0函数简表 446