绪论 1
0.1 两种Turbo C环境 1
0.2 设置自己的任务环境 2
0.3 Turbo C编译器 2
0.4 Turbo C工程制作实用程序 3
0.5 低级功能的支持 3
0.6 配置Turbo C 4
0.7 存储模式 4
第一部分 掌握Turbo C 7
第一章 Turbo C集成开发环境 7
1.1 TC的使用 7
1.1.1 TC命令行开关 8
1.1.2 TC内部命令的使用 9
1.1.3 TC热键 10
1.1.4 菜单结构 11
1.1.5 主菜单 11
1.1.6 功能键提示行 12
1.1.7 编辑窗口 12
1.1.8 消息窗口 15
1.1.9 监视窗口 15
1.1.10 集成调试器 16
1.2 菜单命令 18
1.2.1 File(文件)菜单 18
1.2.2 Edit(编辑)命令 20
1.2.3 Run(运行)菜单 20
1.2.4 Compile(编译)菜单 22
1.2.5 Project菜单 23
1.2.6 Options菜单 25
1.2.7 Debug菜单 37
1.3 配置和pick文件 42
1.3.1 TC配置文件 42
1.3.2 Pick表和Pick文件 44
第二章 使用Turbo C编辑器 46
2.1 编辑器命令 46
2.2 编辑器激活及文本键入 46
2.3 字符、字和行的删除 47
2.4 移动、拷贝文本和块移动 48
2.5 进一步说明如何移动光标 49
2.6 字符系列的搜索和替换 50
2.7 位置标识的设置和搜索 51
2.8 存储和装入文件 52
2.9 自动缩进 52
2.10 磁盘文件中文本块的移入和移出 52
2.11 对匹配 53
2.12 其它有关命令 53
2.13 命令综述 54
2.14 用文件激活Turbo C 55
第三章 Turbo C调试器 56
3.1 调试与程序开发 56
3.2 设计示例程序:PLOTEMP.C 57
3.3 编写原型程序 58
3.4 使用集成调试工具 60
3.5 跟踪程序的流程 60
3.5.1 跟踪高层的运行 60
3.5.2 跟踪子函数 61
3.6 继续程序的开发 61
3.7 设置断点 64
3.7.1 用Ctrl-Break立即中断 65
3.8 计算和修改变量 65
3.8.1 指定显示格式 66
3.8.2 指定值的个数 66
3.8.3 从光标所在位置拷贝 66
3.8.4 查看在别的函数中的变量 66
3.8.5 修改值 67
3.9 通过设置监视项来监视程序运行 70
3.9.1 添加一个监视项 70
3.9.2 观察监视项 70
3.9.3 控制调试器窗口 71
3.9.4 编辑和删除监视项 71
3.9.5 寻找一个函数定义 71
3.9.6 查找调用关系 72
3.9.7 多个源文件 72
3.10 预防措施 72
3.11 有系统的软件测试 73
3.11.1 全面测试修改结果 73
3.11.2 仔细观察的部分 73
3.12 完成PLOTEMP.C 74
3.12.1 完成table_view() 74
3.12.2 实现graph_view() 75
3.12.3 save_temps()和read_temps() 77
第四章 多文件工程管理 79
4.1 工程管理程序的使用 79
4.2 出错跟踪 81
4.2.1 终止MAKE 81
4.2.2 多源文件的语法错误 81
4.2.3 保存或删除信息 82
4.3 工程管理程序的功能 82
4.3.1 自身依赖性检查 82
4.4 取代库 83
4.5 工程管理程序的其他功能 83
4.6 生成最终应用程序的集成环境设置 84
第二部分 Turbo C语言基础 89
第五章 C语言概貌 89
5.1 预备知识 89
5.1.1 源文件、目标文件和装载模块 89
5.1.2 程序的逻辑和执行流程 90
5.2 基本数据类型 96
5.2.1 C语言的基本数据类型 96
5.2.2 何处定义数据对象 98
5.3 编写C语言表达式和语句 101
5.3.1 表达式和语句 101
5.4 控制类型转换 105
5.5 显式类型转换的使用 107
5.6 使用C的宏 107
5.6.1 定义类似对象的宏 108
5.6.2 定义类似函数的宏 110
第六章 操作符和表达式 115
6.1 什么是操作符 115
6.2 单目操作符 116
6.3 双目操作符 116
6.4 三目操作符 117
6.5 标点符号 117
6.6 操作符语义 119
6.6.1 后缀和前缀操作符 119
6.6.2 单目操作符 121
6.6.3 sizeof操作符 122
6.6.4 乘法类操作符 122
6.6.5 加法类操作符 123
6.6.6 按位移位操作符 123
6.6.7 关系操作符 124
6.6.8 相等类操作符 125
6.6.9 位运算操作符 125
6.6.10 逻辑运算符 126
6.6.11 条件操作符?: 127
6.6.12 赋值操作符 127
6.6.13 逗号操作符 128
6.7 高级运算符的使用实例 128
6.7.1 位运算符 128
6.7.2 移位运算符 130
6.7.3 ?:运算符 134
6.7.4 C语言的简写 136
6.7.5 逗号运算符 136
6.7.6 运算符优先级表 136
6.8 表达式 136
第七章 说明 139
7.1 有关概念 139
7.1.1 对象 139
7.1.2 左值 139
7.1.3 右值 140
7.1.4 类型与存储类 140
7.1.5 作用域 140
7.1.6 可见性 141
7.1.7 生存期 141
7.1.8 编译单元 142
7.1.9 连接 142
7.2 说明的语法 143
7.2.1 暂时定义 143
7.2.2 可能的说明 144
7.3 类型说明 147
7.3.1 外部说明与定义 147
7.3.2 类型指明符 147
7.3.3 类型分类 147
7.3.4 基本类型 148
7.3.5 标准转换 151
7.3.6 特殊的char、int与enum间的转换 152
7.3.7 初始化 152
7.4 简单说明 154
7.5 存储类指明符 155
7.5.1 存储类指明符auto的使用 155
7.5.2 存储类指明符extern的使用 155
7.5.3 存储类指明符register的使用 155
7.5.4 存储类指明符static的使用 155
7.5.5 存储类指明符typedef的使用 155
7.6 修饰符 156
7.6.1 const修饰符 156
7.6.2 中断函数修饰符 157
7.6.3 volatile修饰符 157
7.6.4 cdel与pascal修饰符 158
7.6.5 指针修饰符 159
7.6.6 函数类型修饰符 159
7.7 复杂说明与说明符 159
第八章 程序控制语句 161
8.1 程序控制语句的语法 161
8.1.1 带标号语句 162
8.1.2 复合语句 163
8.1.3 表达式语句 163
8.1.4 选择语句 163
8.1.5 循环语句 164
8.1.6 跳转语句 165
8.2 if语句 166
8.2.1 else语句的用法 168
8.2.2 if-else-if阶梯的用法 168
8.2.3 条件表达式 169
8.2.4 if语句的嵌套结构 170
8.3 switch语句 170
8.3.1 default语句的用法 172
8.3.2 break语句的用法 173
8.3.3 switch语句的嵌套结构 174
8.4 循环 176
8.5 for循环 176
8.5.1 for循环的灵活用法 177
8.5.2 无穷的for循环 179
8.5.3 无穷for循环的中断 179
8.5.4 空循环的用法 179
8.6 while循环语句 179
8.7 do while循环 181
8.8 循环嵌套 182
8.9 循环中断 184
8.10 continue语句 186
8.11 goto语句 187
第九章 函数 189
9.1 函数的初步概念 189
9.1.1 说明与定义 189
9.1.2 说明与原型 189
9.1.3 定义 190
9.1.4 形参说明 191
9.1.5 函数调用与参数转换 191
9.2 return语句 192
9.2.1 从一个函数中返回 192
9.2.2 返回值 193
9.2.3 函数返回非整型值 195
9.3 有关函数原型的进一步说明 198
9.3.1 参数不匹配 198
9.3.2 使用头文件 199
9.3.3 无任何参数的函数原型 199
9.3.4 有关旧式C程序 199
9.4 作用域规则 200
9.4.1 局部变量 200
9.4.2 形式参数 202
9.4.3 全局变量 202
9.4.4 有关作用域的最后一个例子 203
9.5 有关函数的参数和变量的更详尽说明 204
9.5.1 赋值调用和赋地址调用 204
9.5.2 一个赋地址调用的建立 205
9.5.3 数组与函数调用 206
9.6 argc,argv和env——main中的参数 209
9.7 从main()中返回值 211
9.8 递归 212
9.9 参数说明的传统形式和现代形式的比较 214
9.10 对一些影响函数的效率和实用性问题的讨论 214
9.10.1 参数和通用函数 214
9.10.2 效率 215
9.11 库函数 215
9.12 改变程序的执行流程 218
9.12.1 使用exit()和abort()函数 218
9.12.2 使用system(),exec…()和spawn()函数 219
9.13 使用可变参数表 220
9.13.1 设计可变参数表 221
9.13.2 使用va…()函数 221
第十章 指针 226
10.1 指针的语法规则 226
10.1.1 什么是指针 226
10.1.2 指针说明 227
10.1.3 指针与常量 227
10.1.4 指针算术运算 228
10.1.5 指针转换 229
10.2 指针是地址 229
10.3 指针变量 229
10.4 指针操作符 230
10.5 指针表达式 231
10.5.1 指针赋值 231
10.5.2 指针运算 231
10.5.3 指针比较 233
10.6 指针和数组 233
10.6.1 索引指针 234
10.6.2 指针和字符串 234
10.6.3 如何得到一个数组元素的地址 235
10.6.4 指针数组 236
10.6.5 一个使用数组和指针的实例 237
10.7 指针的指针 241
10.8 指针的初始化 242
10.9 指针的一些问题 243
10.9.1 使用C语言的间接操作符和取地址操作符 244
10.9.2 使用数组和串 246
10.10 使用指向函数的指针 252
10.10.1 指向函数的指针说明和初始化 252
10.10.2 利用指针引用某调用函数 253
10.11 在动态内存中使用指针 256
10.11.1 C语言程序和动态内存 257
10.11.2 使用动态存储 258
第十一章 数组、结构、位域、联合和枚举 258
11.1 高级数据类型的语法规则 265
11.1.1 数组 265
11.1.2 结构 265
11.1.3 位域 269
11.1.4 联合 269
11.1.5 枚举 270
11.2 数组 271
11.2.1 一维数组 272
11.2.2 字符串 273
11.2.3 二维数组 278
11.2.4 多维数组 280
11.2.5 数组初始化 280
11.2.6 一个水下搜索游戏 282
11.3 结构 285
11.3.1 访问结构元素 286
11.3.2 结构数组 287
11.3.3 结构赋值 294
11.3.4 将结构传递给函数 294
11.3.5 结构指针 296
11.3.6 结构内部的数组和结构 299
11.4 位域 300
11.5 联合(union) 303
11.6 枚举 306
11.7 使用sizeof来确保可移植性 308
11.8 typedef 309
第十二章 Turbo C预处理程序指令 313
12.1 空指令# 313
12.2 #define与#undef指令 313
12.2.1 简单的#define宏 313
12.2.2 #undef指令 314
12.2.3 -D与-U选择项 315
12.2.4 关键字与保护字 315
12.2.5 带参宏 315
12.3 文件包含指令#include 317
12.3.1 〈头名〉形式的头文件搜索 318
12.3.2 “头名”形式的头文件搜索 318
12.4 条件编译 318
12.4.1 #if、#elif、else和#endif条件指令 318
12.4.2 defined运算符 319
12.4.3 #ifdef和#ifndef条件指令 319
12.5 #line行控制指令 320
12.6 #error指令 321
12.7 #pragma指令 321
12.7.1 #pragma argsused 322
12.7.2 #pragma exit与#pragma startup 322
12.7.3 #pragma inline 322
12.7.4 #pragma option 323
12.7.5 #pragma saveregs 324
12.7.6 #pragma warn 324
12.8 预定义的宏 325
第三部分 高级C程序设计技巧 329
第十三章 文件输入输出 329
13.1 两个预处理指令 329
13.1.1 #define指令 329
13.1.2 #include指令 331
13.2 文件与流 331
13.3 流(streams) 331
13.3.1 文本流 331
13.3.2 二进制流 332
13.3.3 文件 332
13.4 概念和实际 332
13.5 控制台I/O 333
13.5.1 字符读写 333
13.5.2 字符串读写 334
13.6 控制台格式化I/O 334
13.6.1 printf()函数 335
13.6.2 scanf()函数 336
13.7 缓冲型I/O系统(ANSI型I/O系统) 339
13.7.1 文件指针 339
13.7.2 打开文件 339
13.7.3 写字符 341
13.7.4 读字符 341
13.7.5 feof()的使用 342
13.7.6 关闭文件 342
13.7.7 ferror()和rewind()函数 342
13.7.8 fopen(),getc(),putc()和fclose()函数的用法 343
13.7.9 getw()和putw()函数的使用 345
13.7.10 fgets()和fputs()函数 345
13.7.11 fread()和fwrite()函数 345
13.7.12 fseek()函数和随机访问I/O 347
13.7.13 标准流 349
13.7.14 fprintf()和fscan()函数 350
13.7.15 删除文件 352
13.8 非缓冲型I/O——UNIX型文件系统 352
13.8.1 open(),creat()和close()函数 353
13.8.2 read()和write()函数 354
13.8.3 unlink()函数 356
13.8.4 随机访问文件和lseek()函数 356
13.9 理解I/O概念 357
13.9.1 文件与设备 358
13.9.2 文件与流 359
13.9.3 文本流和二进制流 360
13.10 利用标准流进行I/O 361
13.10.1 使用格式化I/O函数 361
13.10.2 scanf()函数 365
13.10.3 prints()函数 368
13.10.4 使用字符I/O函数 370
13.11 使用文件控制函数 374
13.11.1 开文件、关文件和控制文件 374
13.11.2 控制文件缓冲区 377
13.12 使用直接文件I/O函数 378
13.12.1 理解直接I/O概念 379
13.12.2 读写直接文件 380
13.13 使用文件定位函数 385
13.13.1 得到当前文件位置 385
13.13.2 建立一个新文件位置 386
13.14 处理文件I/O错误 388
13.14.1 查出文件I/O错误 388
13.14.2 显示和清除文件I/O错误 388
第十四章 屏幕文本和图形程序设计 390
14.1 图形系统和要素 390
14.1.1 视频模式 390
14.1.2 窗口和视区 390
14.1.3 在文本模式下编程 391
14.1.4 在图形模式下编程 396
14.2 Turbo C图形程序设计 405
14.2.1 基本正文模式函数 406
14.2.2 Turbo C的图形子系统简介 414
14.3 IBM/PC的文本方式 422
14.3.1 PC显示器适配器和屏幕 422
14.3.2 视频缓冲区I/O 423
14.4 控制文本屏幕 424
14.4.1 使用文本方式控制函数 424
14.4.2 使用直接控制台I/O以获得高性能 427
14.5 使用窗口函数 427
14.6 了解IBM-PC的图形方式 431
14.6.1 象素点与调色板 431
14.6.2 控制图形屏幕 433
14.7 介绍BGI图形库 434
14.7.1 使用画图和填充函数 434
14.7.2 控制屏幕和视口 438
14.8 在图形方式下显示文本 439
14.8.1 BGI字库 439
14.8.2 使用图形方式下的文本函数 440
第十五章 存储模式 443
15.1 80×86的体系结构 443
15.1.1 段(Segment)、节(Paragraph)以及偏移地址(Offset) 443
15.1.2 CPU的地址寄存器 445
15.2 near指针、far指针和huge指针 446
15.2.1 选择想要的指针大小 446
15.2.2 near、far和huge说明符 448
15.3 六个Turbo C存储模式 450
15.3.1 决定使用哪种存储模式 450
15.3.2 以混合模式编程 451
15.4 创建COM型的可执行程序文件 453
15.4.1 使用COM文件 453
第十六章 与汇编语言的接口 456
16.1 混合语言程序设计 456
16.1.1 参数传递顺序 456
16.2 建立从Turbo C对.ASM的调用 458
16.2.1 简化的段指令 458
16.2.2 标准段指令 459
16.2.3 定义数据常量和变量 459
16.2.4 定义全局和外部标识符 460
16.3 建立从.ASM中对Turbo C的调用 461
16.3.1 引用函数 461
16.3.2 引用数据 461
16.4 定义汇编语言过程 462
16.4.1 传递参数 462
16.4.2 处理返回值 463
16.5 寄存器约定 466
16.6 从.ASM过程中调用C函数 466
16.7 伪变量、嵌入汇编和中断函数 468
16.7.1 伪变量 468
16.7.2 嵌入汇编语言 470
16.7.3 中断函数 475
16.8 使用直接插入(inline)汇编语言 477
16.8.1 直接插入式汇编环境 478
16.8.2 使用asm关键字 478
16.9 与汇编语言例程的接口 481
16.9.1 在C程序里调用汇编例程 481
16.9.2 在汇编例程中调用C函数 490
16.10 使用中断功能 497
16.10.1 80×86的中断结构 497
16.10.2 使用Borland的中断接口 498
16.11 使用中断处理程序 501
16.11.1 声明中断处理程序函数 501
16.11.2 实现一个时钟中断处理程序 504
第四部分 库函数和全局变量参考 511
第十七章 Turbo C标准库函数 511
函数名 函数功能描述 511
abort 异常终止一进程 511
abs 返回整数的绝对值 512
absread 读磁盘的绝对扇区 512
abswrite 写磁盘绝对扇区 513
access 确定文件的存取权限 514
acos 计算反余弦值 515
allocmem 分配DOS内存 515
arc 画圆弧 516
asctime 转换日期和时间为对应的ASCII码 517
asin 反正弦函数 518
assert 条件终止函数 519
atan 反正切函数 519
atan2 计算y/x的反正切值 520
atexit 定义终止函数 521
atof 将字符串转换成浮点数 521
atoi 把字符串转换成整数 522
atol 把字符串转换成长整型 523
bar 画二维条形图 523
bar3d 画一个三维条形图 525
bdos DOS系统调用 526
bdosptr DOS系统调用 527
bioscom I/O通信 528
biosdisk 调用BIOS磁盘驱动程序 530
biosequip 检查设备 532
bioskey 调用BIOS的键盘接口 533
biosmemory 返回内存大小 535
biosprint 调用BIOS的打印机I/O接口 535
biostime 读取或设置BIOS时钟 536
brk 改变数据段内存分配 537
bserch 数组的二分法搜索 538
cabs 计算复数的模 539
calloc 分配内存 540
ceil 舍入 540
cgets 读字符串 541
chdir 改变当前目录 542
_chmod 改变文件的存取权限 543
chmod 改变文件存取权限 545
chsize 修改文件长度 545
circle 画圆 546
_clear87 清除浮点状态字 547
cleardevice 清图形屏幕 548
clearerr 复位错误标志 549
clearviewport 清除当前图形窗口 550
clock 测定运行时间 551
_close 关闭文件 552
close 关闭文件 552
closegraph 关闭图形系统 553
clreol 清除从当前光标位置到行尾的字符 554
clrscr 清除文本窗口,并把光标放在左上角 555
_control87 处理浮点控制字 556
coreleft 返回尚未使用的内存(RAM)大小 557
cos 计算余弦值 557
cosh 计算双曲余弦值 558
country 读取与特定国家有关的格式 558
cprintf 格式化并输出数据至屏幕 559
cputs 输出一字符串至屏幕 560
_creat 创建一个新文件或重写一个已存在的文件 561
creat 创建一个新文件或重写一个已存在的文件 562
creatnew 创建新文件 563
creattemp 创建一个文件名唯一的文件 564
cscanf 从控制台执行格式化输入 565
ctime 把日期和时间转化为对应的字符串 565
ctrlbrk 设置ctrl-break处理程序 566
delay 暂停 567
delline 在文本窗口中删去一行 567
detectgraph 检测硬件并确定应使用何种图形驱动程序和图形模式 568
difftime 计算两个时刻之间的时间差 571
disable 屏蔽中断 571
div 将两个整数相除,返回商和余数 572
dosexterr 获取扩展错误信息 573
dostounix 把日期和时间转换成UNIX格式 574
drawpoly 绘制多边形 574
dup 复制文件句柄 576
dup2 将一个文件句柄(oldhandle)复制到一个已有的文件句柄(newhandle) 577
ecvt 把浮点数转换为字符串 578
elipse 绘制椭圆 579
_emit_ 将文字值直接插入源程序中 580
enable 开硬件中断 581
eof 检测文件是否结束 583
_exit 终止程序 587
exit 终止程序 588
exp 计算e的x次方 588
fabs 返回浮点数的绝对值 589
farcalloc 从远程堆中分配内存 589
farcoreleft 返回远程堆中未使用内存的大小 590
farfree 从远程堆中释放一块已分配内存 591
farmalloc 从远堆中分配内存 592
farrealloc 调整远堆中的已分配块 593
fclose 关闭一个流 593
fcloseall 关闭打开流 594
fcvt 将浮点数转换为字符串 595
fdopen 把流与一个文件句柄相联 595
feof 检测流上的文件结束标志 597
ferror 检测流上的错误 597
fflush 刷新一个流 598
fgetc 从流中读取字符 599
fgetchar 从流中读取字符 600
fgetpos 取得当前文件指针 600
fgets 从流中读取一字符串 601
filelength 取文件长度 602
fileno 取得文件句柄 602
fillellipse 画椭圆饼 603
fillpoly 画多边形 604
findfirst 查找第一个匹配文件 605
findnext 查找下一个匹配文件 607
floodfill 填充区域 608
floor 下舍入 609
flushall 刷新所有流 610
fmod 计算x/y的余数 610
fnmerge 建立文件路径 611
fnsplit 分解完整的路径名 611
fopen 打开一个流 613
FP_OFF 获取远地址偏移量 614
_fpreset 重新初始化浮点数学包 615
fprintf 传送输出到一个流中 617
FP_SEG 获取远地址段值 617
fputc 送一个字符到一个流中 618
fputchar 送一个字符到标准输出 619
fputs 送一个字符串到流中 619
fread 从流中读数据 620
free 释放已分配的内存 621
freemem 释放先前分配的DOS内存 621
freopen 把一个新文件同一个打开的流相联 622
frexp 对双精度数进行科学计数 623
fscanf 格式化输入 623
fseek 移动文件指针 624
fsetpos 定位文件指针 625
fstat 获取已打开文件的信息 627
ftell 返回当前文件指针 628
ftime 把当前时间存入timeb结构中 629
fwrite 把参数写入流中 630
gcvt 把浮点数转换为字符串 630
geninterrupt 产生软中断 631
getarccorrds 取得最后一次调用arc的坐标 632
getaspectratio 返回当前图形模式的纵横比 634
getbkcolor 返回当前背景颜色 635
getc 从流中取字符 636
getcbrk 获取control-break状态 637
getch 从键盘无回显地读取一字符 637
getchar 从stdin流中读取一个字符 638
getche 从键盘并回显地读取一字符 638
getcolor 返回当前绘图颜色 639
getcurdir 读取指定驱动器的当前目录 640
getcwd 读取当前目录 641
getdate 读取系统日期 642
getdefaultpalette 返回缺省调色板信息 642
getdfree 读取磁盘空闲空间 643
getdisk 读取当前磁盘驱动器号 644
getdrivername 返回指向当前图形驱动程序名字的指针 645
getdta 读取磁盘传输地址 646
getenv 读取环境变量的当前值 647
getfat 读取指定驱动器的FAT信息 647
getfatd 读取驱动器FAT信息 648
getfillpattern 将用户定义的填充模式拷贝到内存 649
getfillsettings 取得当前填充模式和填充颜色的有关信息 651
getftime 读取文件日期和时间 653
getgraphmode 返回当前图形模式 654
getimage 将指定区域的位图象存入内存 655
getlinesettings 读取当前线型、模式和宽度 657
getmaxcolor 返回可选的最大有效颜色值 659
getmaxmode 返回当前驱动程序的最大图形模式号 660
getmaxx 返回屏幕上最大的x坐标值 661
getmaxy 返回屏幕上最大的y坐标值 662
getmodename 返回指向含有指定图形模式名字符串的指针 663
getmoderange 获取图形驱动程序的模式范围 664
getpalette 返回当前调色板的有关信息 665
getpalettesize 返回调色板的颜色数目 667
getpass 读入口令 668
getpid 读取进程号 669
getpixel 读取得象素的颜色 669
getpsp 读取程序段前缀 671
gets 从标准输入流stdin中读取一字符串 671
gettext 拷贝文本屏幕上的文本拷贝到内存中 672
gettextinfo 读取文本模式的显示信息 673
gettextsettings 返回当前图形字体的有关信息 674
gettime 读取系统时间 676
getvect 读取中断向量 677
getverify 取得DOS的当前校验状态 677
getviewsettings 返回有关当前视区的信息 678
getw 从输入流中读取一整数 679
getx 返回当前图形方式下位置的x坐标值 681
gety 返回当前位置的y坐标值 682
gmtime 把日期和时间转换为格林威治标准时间(GMT) 683
gotoxy 在文本窗口中定位文本光标 684
graphdefaults 复位图形设置 684
grapherrormsg 返回一个指向错误信息串的指针 685
_graphfreemem 可修改的图形内存释放函数 686
_graphgetmem 可修改的图形内存分配函数 688
graphresult 返回最后一次失败图形操作的错误码 689
Harderr 建立一个错误处理程序 691
hardresume 硬件错误处理函数 694
hardretn 硬件错误处理函数 697
highvideo 选择高亮度字符 699
hypot 计算直角三角形的斜边长 700
imagesize 返回保存位图象所需的缓冲区大小 700
initgraph 初始化图形系统 702
inport inp从端口中读入一个字 705
inportb 从端口中读入一个字节 706
insline 在文本窗口插入一空行 706
installuserdriver 安装设备驱动程序到BGI设备驱动程序表中 707
installuserfont 安装未嵌入BGI系统的字体文件(.CHR) 709
int86 调用8086软中断 710
int86x 通用8086软中断接口 711
intdos 通用DOS中断接口 712
intdosx 通用DOS中断接口 713
intr 改变软中断接口 714
ioctl I/O设备控制 715
isalnum 字符分类宏 716
isaplha 字符分类宏 717
isascii 字符分类宏 717
isatty 检查设备类型 718
iscntrl 字符分类宏 718
isdigit 字符分类宏 719
isgraph 字符分类宏 720
islower 字符分类宏 720
isprint 字符分类宏 721
ispunct 字符分类宏 721
isspace 字符分类宏 722
isupper 字符分类宏 722
isxdigit 字符分类宏 723
itoa 把整数转换为字符串 723
kbhit 检查当前按下的键 724
keep 驻留并退出 724
labs 给出长型绝对值 726
ldexp 计算x乘以2的exp次方 726
ldiv 两个长整型数相除,返回商和余数 727
lfind 线性搜索 728
line 在指定两点间画一直线 729
linerel 从当前位置(CP)到与CP有一相对距离的点画一直线 730
lineto 从当前位置到(x,y)画一直线 731
localtime 把日期和时间转变为结构类型 732
lock 设置文件共享锁 733
log 计算x的自然对数 734
log10 计算log(X) 735
longjmp 执行非局部跳转 735
lowvideo 选择低亮度字符 736
_lrotl 将无符号长整型数向左循环移位 737
_lrotr 将无符号长整型数向右循环移位 738
lsearch 线性搜索 738
lseek 移动文件指针 740
ltoa 把一个长整型数转换为字符串 741
malloc 分配内存 741
matherr 用户可修改的数学错误处理程序 742
max 返回两数中较大的数 744
memccpy 拷贝一个n字节长的字符串 744
memchr 字符串中搜索字符 745
memcmp 比较两个字符串 745
memcpy 拷贝字符串 746
memicmp 比较两个字符数组中的n个字节,忽略大小写 747
memmove 拷贝块中的n字符 747
memset 将一个内存块的n个字节都设置为c 748
min 返回两个值中较小的一个 748
mkdir 创建目录 749
MK_FP 设置一个远指针 750
mktemp 建立一个唯一的文件名 751
modf 把双精度数转化为科学计数法 751
movedata 拷贝数据 752
moverel 从当前位置(CP)移动一相对距离 752
movetext 将屏幕上的文本从一个矩形区域拷贝到另一个矩形区域 754
moveto 从当前坐标位置(CP)移到(x,y) 754
movmem 移动一长为length字节的串 755
normvideo 选择正常亮度字符 756
nosound 关闭PC机扬声器 756
_open 打开一个文件进行读或写 757
open 打开一个文件进行读或写 758
outport outp输出一个字到端口中 760
outportb 输出一个字节到端口 760
outtext 显示一个字符串 761
outtextxy 在指定位置显示一字符串 762
parsfnm 分析文件名 763
peek 返回由segment:offset指定的内存中的字 764
peekb 返回由segment:offset指定的内存中的字节 765
perror 打印系统错误信息 766
pieslice 绘制并填充扇形 767
poke 在由segment:offset指定的内存中存储一个字 768
pokeb 在由segment:offset指定的内存中存储一个字节 768
poly 根据参数产生一个多项式 769
pow 计算x的y次方 770
pow10 指数函数10的p次方 770
printf 写格式化输出到stdout 771
putc 输出一个字符到流中 777
putch 向屏幕输出字符 777
putchar 在stdout上输出字符 778
putenv 将字符串放入当前环境中 779
putimage 输出一个位图象到图形屏幕上 780
putpixel 写象素点 782
puts 输出一字符串到标准输出(stdout) 783
puttext 从内存区拷贝文本到屏幕 784
putw 输出一整数到流中 784
qsort 用快速排序算法进行排序 786
raise 向正在执行的进程发送一个软中断信号 787
rand 产生随机数 787
randbrd 随机块读 788
randbwr 随机块写 789
random 随机数发生器 791
randomize 初始化随机数发生器 791
_read 读文件 792
read 读文件 793
real 返回复数的实部 795
realloc 重新分配内存 795
rectangle 画一个矩形 796
registerbgidriver 注册已加载或连接进来的图形驱动程序 797
registerbgifont 注册已连接进来的矢量字体代码 798
remove 删除一个文件 800
rename 文件改名 800
restorecrtmode 恢复屏幕为调用initgraph前的设置 801
rewind 将文件指针重定位于流的开始处 802
rmdir 删除目录 803
_rotl 将一个无符号整数(unsigned)左循环移位 804
_rotr 将一个无符号整数向右循环移位 805
sbrk 改变数据段地址 806
scanf 格式化输入 806
searchpath 按DOS路径查找一个文件 813
sector 画并填充椭圆扇区 814
segread 读段寄存器值 815
setactivepage 设置图形输出活动页 816
setallpalette 改变所有的调色板颜色 817
setaspectratio 设置图形纵横比 819
setbkcolor 用调色板设置当前背景颜色 821
setblock 修改已分配的内存的大小 822
setbuf 把缓冲区与流相联 823
setcbrk 设置control-break 824
setcolor 设置当前要画的线的颜色 825
setdate 设置DOS日期 827
setdisk 设置当前驱动器 827
setdta 设置磁盘传输地址 828
setfillpattern 选择自定义的填充模式 830
setfillstyle 设置填充模式和颜色 831
setftime 取得文件日期和时间 833
setgraphbufsize 改变内部图形缓冲区的大小 834
setgraphmode 将系统设置成图形模式并清屏 835
setjmp 非局部跳转(在MS-WINDOWS中不能使用本功能) 837
setlinestyle 设置当前画线宽度和类型 838
setmem 设置内存 840
setmode 设置打开文件方式 841
setpalette 改变调色板的颜色 841
setrgbpalatte 定义IBM 8514图形卡的颜色 843
settextjustify 为图形函数设置文本的对齐方式 845
settextstyle 为图形输出设置当前的文本属性 847
settime 设置系统时间 849
setusercharsize 修改矢量字体字母的宽度和高度 850
setvbuf 使缓冲区与流相联 851
setvect 设置中断矢量入口 852
setverify 设置DOS中的校验标志状态 853
setviewport 为图形输出设置当前视口 854
setvisualpage 设置可见的图形页号 855
setwritemode 设置图形方式下画线的输出模式 856
signal 设置某一信号的对应动作 858
sin 计算正弦值 861
sinh 计算双曲正弦值 861
sleep 执行挂起一段时间 862
sopen 打开一共享文件 862
sound 按指定频率打开PC扬声器 864
spawnl,spawnel,spawnlp,spawnlpe,spawnv,spawnve,spawnvp,spawnvpe 创建并运行子进程 865
sprintf 送格式输出到字符串 867
sqrt 计算参数平方根的绝对值 868
srand 初始化随机数发生器 869
sscanf 从某串中扫描格式化输入 869
stat 读取文件信息 871
_status87 取浮点状态 872
stime 设置系统日期和时间 873
stpcpy 拷贝字符串 874
strcat 串连接 874
strchr 搜索串中某个给定字符的第一次出现 875
strcmp 串比较 876
strcmpi 忽略大小写的串比较 876
strcpy 串拷贝 877
strcspn 搜索串中不包含给定字符集之子集的第一个段 878
strdup 复制串 878
_strerror 建立用户定义的错误信息 879
strerror 返回指向错误信息字符串的指针 879
stricmp 忽略大小写的串比较 880
strlen 计算字符串的长度 881
strlwr 转换字符串中的大写字母为小写字母 881
strncat 把字符串的一部分附加到另一个串之后 882
strncmp 把串的一部分与另一个串的一部分进行比较 882
strncmp i忽略大小写的串部分比较 883
strnset 将串中指定数目字节设置为字符 884
strpbrk 搜索给定集合中任一字符在串中的首次出现 884
strrchr 搜索给定字符在串中的最后一次出现 885
strrev 颠倒串中各字符的顺序 885
strset 设置串中所有字符为给定字符 886
strspn 搜索给定字符集的子集在串中第一次出现的段 886
strstr 搜索给定子串在某串中的出现位置 887
strtod 把串转换为双精度数值 887
strtok 搜索串中的某单词,该单词由第二个串中指定的符号进行分隔 888
strtol 转换串为长整型数 889
strtoul 将字符串转换为给定基数的无符号长整型值 890
swab 交换字节 891
system 执行DOS命令 891
tan 计算正切值 892
tanh 计算参数x的双曲正切值 892
tell 取文件指针的当前位置 893
textattr 设置文本属性 894
textbackground 选择文本的背景颜色 895
textcolor 选择文本模式的前景颜色 896
textheight 返回以象素为单位的字符串高度 897
textmode 将屏幕设置成文本模式 899
textwidth 返回以象素为单位的字符串宽度 900
time 取时间 901
tmpfile 以二进制方式打开临时文件 901
tmpnam 创建唯一的文件名 902
toascii 转换字符为ASCII格式 903
_tolower 转换字母为小写 903
tolower 转换字符为小写 904
_toupper 转换字母为大写 904
toupper 转换字符为大写 905
tirg 三角函数 906
tzset 设置全局变量daylight、timezone和tzname的值 906
ultoa 转换无符号长整型值为字符串 907
ungetc 把一个字符回退到输入流中 908
ungetch 把一个字符回送到键盘缓冲区 909
unixtodos 把UNIX格式的日期和时间转换成DOS格式 909
unlink 删除文件 910
unlock 解除文件共享锁 911
va_arg、va_end、va_start 实现可变参数表 912
vfprintf 送格式化输出到一流中 913
vfscanf 从流中搜索和格式化输入 914
vprintf 送格式化输出到stdout 916
vscanf 从stdin中搜索和格式化输入 916
vsprintf 送格式化输出到串中 917
vsscanf 从流中搜索和格式化输入 918
wherex 给出窗口内光标水平位置 919
wherey 给出窗口内光标垂直位置 920
window 创建活动文本模式窗口 920
_write 写文件 921
write 写文件 922
第十八章 全局变量 924
_8087 协处理器芯片标志 924
_argc 保存命令行的参数个数 924
_argv 命令行参数指针数组 924
_ctype 字符属性信息数组 924
daylight 指示是否进行夏令时间调整 925
directvideo 视频输出控制的标志 925
environ 存取DOS环境变量 925
errno、_doserrno、sys_errlist、sys_nerr使perror 能打印错误信息 925
_fmode 设置缺省文件传送模式 927
_heaplen 保存近堆的长度 928
_openfd 存取模式数组 928
_osmajor、_osminor、_version包含DOS版本的主号和次号 929
_psp 包含当前程序的程序段前缀(PSP)的段地址 929
_stklen 保存堆栈的大小 929
timezone 包含当地时间与格林威治时间(GMT)之间的差值(以秒为单位) 930
tzname 时区名指针数组 930
_version DOS版本号 930
_wscroll 指示控制台I/O函数是否滚屏 930
第五部分 附录 933
附录A TCC命令行编译器 933
A.1 使用命令行编译器 933
A.1.1 使用选择项 933
A.1.2 语法和文件名 935
A.1.3 应答文件 936
A.1.4 配置文件 936
A.2 编译器选项 937
A.2.1 存储模式 937
A.2.2 宏定义 938
A.2.3 代码生成选项 938
A.2.4 优化选择项 939
A.2.5 源代码选项 940
A.2.6 出错报告选择项 941
A.2.7 段命名控制 942
A.2.8 编译控制选择项 943
A.4 环境选项 943
A.4.1 查找包含文件和库文件 943
A.4.2 文件搜索算法 944
A.4.3 一个实例 944
附录B 实用程序 946
B.1 MAKE实用程序 946
B.1.1 MAKE的工作过程 946
B.1.2 启动MAKES 947
B.1.3 MAKE的一种简单运用 948
B.1.4 制作makefile文件 950
B.1.5 makefile文件的组成 950
B.1.6 命令表 950
B.1.7 显式规则 953
B.1.8 隐式规则 955
B.1.9 宏 956
B.1.10 指令 959
B.1.11 MAKE出错信息 963
B.2 TLIB:库管理程序 966
B.2.1 为什么使用目标模块库 967
B.2.2 TLIB命令行 967
B.2.3 操作列表 968
B.2.4 使用响应文件 969
B.2.5 建立扩展字典:/E选项 969
B.2.6 设置页大小:/P选项 969
B.2.7 高级操作:/C选项 969
B.2.8 例子 970
B.3 连接程序TLINK 970
B.3.1 调用TLINK 970
B.3.2 使用响应文件 972
B.3.3 和Turbo C模块一起使用TLINK 973
B.3.4 与TCC一起使用TLINK 974
B.3.5 连接选项 975
B.3.6 TLINK的限制 977
B.3.7 出错信息 977
B.4 THELP帮助 980
B.4.1 装入和调用THELP 980
B.4.2 THELP选项 981
B.5 GREP查找程序 984
B.5.1 命令行形式 984
B.5.2 GREP的选项 985
B.5.3 正常的优先次序 986
B.5.4 搜寻字符串 986
B.5.5 正则表达式的操作符 987
B.5.6 文件说明 987
B.5.7 GREP使用示例 987
B.6 其它实用程序 990
B.6.1 BGIOBJ:图形驱动程序和字体的转换程序 991
B.6.2 CPP:预处理实用程序 995
B.6.3 OBJXREF:目标模块的交叉引用列表实用程序 997