1.1 C语言的发展史 1
1.2 C语言的特点 1
前言页 1
前言 1
第一部分 C语言 1
第1章 C语言概述 1
1.3 C语言程序的格式 2
1.4.1 编译程序和解释程序 3
1.4 C语言程序的编译 3
1.4.3 库函数和连接 4
1.4.2 分块编译 4
2.2 数据类型 5
2.1 标识符名 5
第2章 变量、常数、运算符和表达式 5
2.3 类型说明符 6
2.4 访问说明符 7
2.6 局部变量 8
2.5 变量的说明 8
2.7 形式参数 9
2.8 全程变量 10
2.9.1 外部变量(extern) 11
2.9 存储类型说明符 11
2.9.2 静态变量(static variables) 12
2.10.1 赋值中的类型转换 15
2.10 赋值语句 15
2.9.3 寄存器变量(register variables) 15
2.11.1 控制字符常量 17
2.11 常量 17
2.10.2 变量初始化 17
2.12.1 算术运算符 18
2.12 运算符 18
2.12.2 增1和减1运算符 19
2.12.3 关系运算符和逻辑运算符 20
2.12.4 按位运算符 21
2.12.5 “?”运算符 23
2.12.6 “ ”和“*”运算符 24
2.12.7 编译状态运算符sizeof 25
2.12.9 “.”和“->”运算符 26
2.12.8 逗号运算符 26
2.12.11 运算符优先次序表 27
2.12.10 方括号“[]”和圆括号“()” 27
2.12.14 强制类型转换 28
2.12.13 表达式中的类型转换 28
2.12.12 表达式 28
2.12.16 C语言的简写 29
2.12.15 空格和圆括号 29
3.3 if语句 31
3.2 C语言的语句 31
第3章 程序控制语句 31
3.1 C语言中的逻辑变量 31
3.3.1 if的嵌套形式 32
3.3.2 阶梯式if-else-if语句 33
3.3.3 ?运算符 34
3.4 switch语句 35
3.5 for语句 38
3.5.1 for循环的变体 39
3.5.2 无限循环 41
3.6 while语句 42
3.5.3 无循环体for循环 42
3.8 break语句 44
3.7 do-While语句 44
3.10 continue语句 46
3.9 exit语句 46
3.11 标号和goto语句 47
4.1.1 从函数返回 49
4.1 返回语句 49
第4章 函数 49
4.1.2 返回值 50
4.2 函数作用域规则 51
4.3.1 赋值调用和赋地址调用 52
4.3 函数参数 52
4.3.2 函数调用与指针 53
4.3.3 函数调用与数组 54
4.4 主函数中的命令行参数--argc和argv 57
4.5 函数返回非整型值 59
4.5.1 返回指针 60
4.6 函数原则 61
4.7 函数递归 62
4.6.1 参数说明的现代风格与传统风格 62
4.8 指向函数的指针 63
4.9.1 参数和通用函数 65
4.9 补充问题 65
4.9.2 效率 66
5.1 一维数组 67
第5章 数组 67
5.2 传递一组数组给函数 68
5.2.1 字符串 69
5.3 二维数组 70
5.3.1 字符串数组 73
5.4 多维数组 74
5.5 数组与指针 75
5.6 数组空间的分配 76
5.7.1 不定长数组的初始化 79
5.7 数组的初始化 79
5.8 应用举例--井字游戏(Tic-Tac-Toe) 80
6.2 指针变量 83
6.1 指针是地址 83
第6章 指针 83
6.4.1 指针的赋值 84
6.4 指针表达式 84
6.3 指针运算符 84
6.4.2 指针的算术运算 85
6.4.3 指针比较 86
6.5 Turbo C动态分配函数 87
6.6 指针和数组 88
6.6.1 指向字符型数组的指针 89
6.6.2 指针数组 90
6.7 指向指针的指针 91
6.8 指针初始化 92
6.9 函数型指针 93
6.10 使用指针的一些问题 95
7.1 结构 97
第7章 结构、联合、用户定义的类型和枚举 97
7.1.1 访问结构元素 98
7.1.3 实例 99
7.1.2 结构数组 99
7.2.2 将整个结构传递给函数 104
7.2.1 将结构元素传递给函数 104
7.2 将结构传递给函数 104
7.3.1 结构指针说明 105
7.3 结构指针 105
7.3.2 使用结构指针 106
7.5 位域 109
7.4 结构内部的数组和结构 109
7.6 联合 111
7.7 枚举 113
7.8 使用Sizeof来确保可移值性 114
7.9 使用typedef 115
8.1.1 流的概念(stream) 117
8.1 流(stream)和文件(file) 117
第8章 输入、输出和磁盘文件 117
8.2 概念和实际 118
8.1.2 文件(file) 118
8.3.1 getche()和putchar()函数 119
8.3 控制台I/O 119
8.3.2 gats()和puts()函数 120
8.4.1 printf()函数 121
8.4 控制台格式化I/O 121
8.4.2 scanf()函数 122
8.5.2 fopen()函数 125
8.5.1 文件指针 125
8.5 缓冲型I/O系统 125
8.5.5 fclose()函数 127
8.5.4 getc()函数 127
8.5.3 prtc()函数 127
8.5.7 fopen(),getc(),putc()fclose()函数的用法 128
8.5.6 ferror()和rewind()函数 128
8.5.10 fread()fwrite()函数 130
8.5.9 fgets()和fputs()函数 130
8.5.8 getw()和putw()函数 130
8.5.11 fseek()函数和随机访问I/O 131
8.5.13 fprintf和fscanf函数 134
8.5.12 stdin,stdout和stderr 134
8.6.1 open(),creat()和close()函数 136
8.6 非缓冲型I/O-UNIX型文件系统 136
8.5.14 删除文件 136
8.6.2 write()和read()函数 138
8.6.4 随机访问文件和lseek()函数 139
8.6.3 unlink()函数 139
8.7 方法选择 141
9.2 #define指令 142
9.1 Turbo C的预处理指令 142
第9章 Turbo C预处理指令和编译选择 142
9.3 #error指令 144
9.5.1 #if,#else,#elif和#endif指令 145
9.5 条件编译指令 145
9.4 #include指令 145
9.5.2 #ifdef和#ifndef指令 147
9.7 #line指令 148
9.6 #undef指令 148
9.9 预定义的宏替换名 149
9.8 #pragma指令 149
10.2 地址的计算 152
10.1 8086系列微处理器 152
第10章 Turbo C存储模式 152
10.4.1 微型模式(Tiny Model) 154
10.4 存储模式 154
10.3 16位与20位指针 154
10.4.3 中型模式(Medium Model) 155
10.4.2 小型模式(Small Model) 155
10.4.4 紧凑型模式(Compact Model) 156
10.4.7 模式的选择 157
10.4.6 巨型模式(Huge Model) 157
10.4.5 大型模式(Large Model) 157
10.5 混合模式编程 158
10.4.8 编译程序的内存模式选择项 158
10.5.3 huge(特大) 159
10.5.2 near(近程) 159
10.5.1 far(远程) 159
10.7.2 change-mem()函数 160
10.7.1 display-mem()函数 160
10.6 Turbo C的段说明符 160
10.7 内存显示和修改程序实例 160
10.7.3 完整的内存显示和修改程序 161
11.1 怎样使用TC 164
第11章 Turbo C2.0集成开发环境 164
11.1.2 TC内部命令的使用 165
11.1.1 TC命令行开关 165
11.1.3 TC热键 166
11.1.4 菜单结构 167
11.2 菜单命令 169
11.2.1 文件(File)菜单 170
11.2.2 编辑(Edit)命令 171
11.2.3 运行(Run)菜单 173
11.2.4 编译(Compile)菜单 175
11.2.5 项目(Project)菜单 177
11.2.6 选择项(Options)菜单 178
11.2.7 调试(Debug)菜单 189
11.2.8 Break/Watch菜单 192
第12章 Turbo C与汇编语言程序的接口 195
12.1.1 Turbo C的调用协定 196
12.1 调用协定 196
12.2 建立汇编代码函数 197
12.3 使用asm 203
12.4 何时用汇编程序编程 204
13.1.1 草拟你的程序 206
13.1 自顶向下的设计 206
第13章 Turbo C用于软件工程 206
13.1.2 选择数据结构 207
13.2 “防范”功能 208
13.3 函数原型 209
13.4.1 项目(project)及项目选择项 210
13.4 编译多个文件 210
13.4.3 指定附加从属关系 211
13.4.2 你自己去尝试 211
13.5 独立应用MAKE 212
13.6 TLIB-Turbo C库管理程序 215
13.7 GREP的应用 217
14.1.1 增1和减1运算符 218
14.1 效率 218
第14章 效率、可移值性及调试 218
14.1.2 使用寄存器变量 220
14.1.4 函数的使用 222
14.1.3 指针与数组下标 222
14.2.1 使用#define 225
14.2 程序的移值 225
14.2.3 数据长度的差别 226
14.2.2 对操作系统的依赖 226
14.3.1 运算顺序错误 227
14.3 调试 227
14.3.2 指针问题 228
14.3.3 重新定义函数 229
14.3.5 边界错误 230
14.3.4 时断时续的错误 230
14.3.6 函数说明的疏漏 231
14.3.8 栈(stack)--堆(heap)冲突 232
14.3.7 调用参数错误 232
14.4 一般的调试理论 233
14.3.9 使用原型以防出错 233
14.5.1 修改错误 234
14.5 程序维护的艺术 234
14.5.2 保护源程序 235
15.1 连接程序(Linker) 236
第15章 连接、库和头部文件 236
第二部分 Turbo C库 236
15.2.2 头部文件(Header File) 237
15.2.1 库文件和目标文件的比较 237
15.2 C标准库 237
15.3 头部文件的宏定义 238
16.1 access()函数 240
第16章 I/O函数 240
16.3 _chmod()函数 241
16.2 cgets()函数 241
16.4 chmod()函数 242
16.5 clearerr()函数 243
16.7 cprintf()函数 244
16.6 close()和_close()函数 244
16.8 crear,_creat,creatnew()和creattamp()函数 245
16.9 cscanf()函数 246
16.10 dup()和dup2()函数 247
16.12 fclose()和fcloseall()函数 248
16.11 eof()函数 248
16.13 fdopen()函数 249
16.15 ferror()函数 250
16.14 feof()函数 250
16.17 fgetc()函数 251
16.16 fflush()函数 251
16.19 fgets()函数 252
16.18 fgethar()函数 252
16.21 fileno()函数 253
16.20 filelength函数() 253
16.22 fopen()函数 254
16.23 fprintf()函数 255
16.24 fputc()函数 256
16.26 fputs()函数 257
16.25 fputchar()函数 257
16.27 fread()函数 258
16.29 fscanf()函数 259
16.28 freopen()函数 259
16.30 fseek()函数 260
16.31 fstat()函数 261
16.32 ftell()函数 262
16.34 getc()函数 263
16.33 fwrite()函数 263
16.36 getchar()函数 264
16.35 getch和getche()函数 264
16.38 gets()函数 265
16.37 getpass()函数 265
16.39 getw()函数 266
16.40 ioctl()函数 267
16.42 kbhit()函数 268
16.41 isatty()函数 268
16.43 lock()函数 269
16.44 lseek()函数 270
16.45 open()_open和()函数 271
16.47 printf()函数 273
16.46 perror()函数 273
16.49 putch()函数 275
16.48 putc()函数 275
16.51 puts()函数 276
16.50 putchar()函数 276
16.52 putw()函数 277
16.54 remove()函数 278
16.53 read()和_read()函数 278
16.56 rewind()函数 279
16.55 rename()函数 279
16.57 scanf()函数 280
16.59 setftime()函数 283
16.58 setbuf()函数 283
16.60 setmode()函数 284
16.61 setvbuf()函数 285
16.62 sopen()函数 286
16.64 sscanf()函数 287
16.63 sprintf()函数 287
16.66 tell()函数 288
16.65 stat()函数 288
16.68 tmpnam()函数 289
16.67 tmpfile()函数 289
16.69 ungatc()函数 290
16.71 vprintf,vfprintf()和vsprintf()函数 291
16.70 ungetch()函数 291
16.72 vscanf()和vfscanf()函数 292
16.73 write()和_write()函数 293
第17章 字符串、内存和字符函数 294
17.2 isalpha()函数 296
17.1 isalunm()函数 296
17.4 iscntrl()函数 297
17.3 isascii()函数 297
17.6 isgraph()函数 298
17.5 isdigit()函数 298
17.8 isprint()函数 299
17.7 islower()函数 299
17.10 isspace()函数 300
17.9 ispunct()函数 300
17.12 isxdigit()函数 301
17.11 isupper()函数 301
17.13 memccpy()函数 302
17.15 memcmp()和memicmp()函数 303
17.14 memchr()函数 303
17.17 memmove()函数 304
17.16 memcpy()函数 304
17.19 movedata()函数 305
17.18 memset()函数 305
17.21 setmem()函数 306
17.20 movmem()函数 306
17.23 strcat()函数 307
17.22 stpcpy()函数 307
17.25 strcmp(),stricmp()和strcmpi()函数 308
17.24 strchr()函数 308
17.26 strcpy()函数 309
17.28 strdup()函数 310
17.27 strcspn()函数 310
17.30 strerror()函数 311
17.29 _strerror()函数 311
17.32 strlwr()函数 312
17.31 strlen()函数 312
17.34 strncmp()和strnicmp()函数 313
17.33 strncat()函数 313
17.35 strncpy()函数 314
17.37 strpbrk()函数 315
17.36 strnset()函数 315
17.39 strrev()函数 316
17.38 strrchr()函数 316
17.41 strspn()函数 317
17.40 strset()函数 317
17.42 strstr()函数 318
17.44 strupr()函数 319
17.43 strtok()函数 319
17.47 _toupper()和toupper()函数 320
17.46 _tolower()和tolower()函数 320
17.45 toascii()函数 320
18.2 acos()函数 322
18.1 abs()函数 322
第18章 数学函数 322
18.4 atan()函数 323
18.3 asin()函数 323
18.6 cabs()函数 324
18.5 atan2()函数 324
18.8 cos()函数 325
18.7 ceil()函数 325
18.10 exp()函数 326
18.9 cosh()函数 326
18.12 floor()函数 327
18.11 fabs()函数 327
18.14 frexp()函数 328
18.13 fmod()函数 328
18.16 labs()函数 329
18.15 hypot()函数 329
18.18 log()函数 330
18.17 ldexp()函数 330
18.20 matherr()函数 331
18.19 log10()函数 331
18.21 modf()函数 332
18.23 pow()函数 333
18.22 poly()函数 333
18.25 sin()函数 334
18.24 pow10()函数 334
18.27 sqrt()函数 335
18.26 sinh()函数 335
18.29 tanh()函数 336
18.28 tan()函数 336
19.1 asctime()函数 337
第19章 时间转换和操作函数 337
19.2 clock()函数 338
19.4 difftime()函数 339
19.3 ctime()函数 339
19.6 getdate()函数 340
19.5 dostounix()函数 340
19.8 gmtime()函数 341
19.7 gettime()函数 341
19.10 setdate()函数 342
19.9 localtime()函数 342
19.11 settime()函数 343
19.13 time()函数 344
19.12 stime()函数 344
19.15 unixtodos()函数 345
19.14 tzset()函数 345
20.1 absread()和abswrite()函数 346
第20章 接口函数 346
20.2 bdos()和bdosptr()函数 347
20.3 bioscom()函数 348
20.4 biosdisk()函数 350
20.5 biosequip()函数 351
20.6 bioskey()函数 352
20.8 biosprint()函数 354
20.7 biosmemory()函数 354
20.9 biostime()函数 355
20.10 country()函数 356
20.12 delay()函数 357
20.11 ctrlbrk()函数 357
20.14 dosexterr()函数 358
20.13 disable()函数 358
20.17 geninterrupt()函数 359
20.16 FP_OFF()FP_SEG()函数 359
20.15 enable()函数 359
20.19 getdfree()函数 360
20.18 getcbrk()函数 360
20.21 getfat()和getfatd()函数 361
20.20 getdta()函数 361
20.22 getpsp()函数 362
20.24 getverify()函数 363
20.23 getvect()函数 363
20.25 harderr(),hardresume()和hardretn()函数 364
20.27 intdos()和intdosx()函数 366
20.26 inport()和inportb()函数 366
20.28 int86()和int86x()函数 367
20.31 keep()函数 368
20.30 intr()函数 368
20.29 interrupt()函数 368
20.34 outport()和outportb()函数 369
20.33 outp()函数 369
20.32 MK_FP()宏 369
20.35 parsfnm()函数 370
20.36 peek(),peekb,poke()和pokeb()函数 371
20.38 segread()函数 372
20.37 randbrd()和randbwr()函数 372
20.39 setcbrk()函数 373
20.42 setverify()函数 374
20.41 setvect()函数 374
20.40 setdta()函数 374
20.43 sleep()函数 375
21.1 allocmem()函数 376
第21章 动态地址分配 376
21.2 brk()函数 377
21.4 coreleft()函数 378
21.3 calloc()函数 378
21.7 farfree()函数 379
21.6 farcoreleft()函数 379
21.5 farcalloc()函数 379
21.10 free()函数 380
21.9 farrealloc()函数 380
21.8 farmalloc()函数 380
21.12 malloc()函数 381
21.11 freemem()函数 381
21.13 realloc()函数 382
21.15 setblock()函数 383
21.14 sbrk()函数 383
22.1 chdir()函数 385
第22章 目录函数 385
22.2 findfirst()和findnext()函数 386
22.3 fnmerge()和fnsplit()函数 387
22.4 getcurdir()函数 388
22.6 getdisk()函数 389
22.5 getcwd()函数 389
22.8 mktemp()函数 390
22.7 mkdir()函数 390
22.9 rmdir()函数 391
22.11 setdisk()函数 392
22.10 searchpath()函数 392
22.12 unlink()函数 393
23.2 atexit()函数 394
23.1 abort()函数 394
第23章 过程控制函数 394
23.3 exec...()函数 395
23.4 exit()和_exit()函数 396
23.5 spawn...()函数 397
23.7 va_start(),va_end()和va_arg()函数 399
23.6 system()函数 399
24.1 arc()函数 401
第24章 字符屏幕和图形功能函数 401
24.2 bar()和bar3d()函数 402
24.4 cleardevice()和clearviewport()函数 403
24.3 circle()函数 403
24.5 closegraph()函数 404
24.6 clreol()和clrscr()函数 405
24.8 cputs()函数 406
24.7 cprintf()函数 406
24.10 detectgraph()函数 407
24.9 delline()函数 407
24.11 drawpoly()函数 408
24.12 ellipse()函数 409
24.13 fillellipse()函数 410
24.14 fillpoly()函数 411
24.15 floodfill()函数 412
24.16 getarccoords()函数 413
24.18 getbkcolor()函数 414
24.17 getaspectratio()函数 414
24.19 getcolor()函数 416
24.20 getdefaultpalette()函数 417
24.22 getfillpattern()函数 418
24.21 getdrivename()函数 418
24.23 getfillsettings()函数 419
24.24 getgraphmode()函数 421
24.25 getimage()函数 423
24.26 getlinsettings()函数 424
24.27 getmaxcolor()函数 425
24.29 getmaxx()和getmaxy()函数 426
24.28 getmaxmode()函数 426
24.30 getmodename()函数 427
24.31 getmoderange()函数 428
24.32 getpalette()函数 429
24.34 getpixel()函数 431
24.33 getpalettesize()函数 431
24.35 gettextinfo()函数 432
24.36 gettext()函数 433
24.37 gettextsettings()函数 434
24.38 getviewsettings()函数 435
24.39 getx()和gety()函数 436
24.40 gotoxy()函数 437
24.42 grapherrormsg()函数 438
24.41 graphdefaults()函数 438
24.44 graphresult()函数 439
24.43 _graphfreememt和_graphgetmem()函数 439
24.46 imagesize()函数 441
24.45 highvideo()函数 441
24.47 initgraph()函数 442
24.48 insline()函数 444
24.49 installuserdriver()函数 445
24.51 line(),lineto()和linerel()函数 446
24.50 installuserfont()函数 446
24.53 moverel()函数 447
24.52 lowvideo()函数 447
24.55 moveto()函数 448
24.54 movetext()函数 448
24.57 outtext()和outtextxy()函数 449
24.56 normvideo()函数 449
24.58 pieslice()函数 450
24.59 putimage()函数 451
24.60 putpixel()函数 452
24.61 puttext()函数 453
24.63 registerbgidriver()和registerbgifont()函数 454
24.62 rectangle()函数 454
24.65 sector()函数 455
24.64 restorecrtmode()函数 455
24.66 setactivepage()函数 456
24.67 setallpalette()函数 457
24.68 setaspectratio()函数 458
24.69 setbkcolor()函数 459
24.70 setcolor()函数 460
24.72 setfillstyle()函数 461
24.71 setfillpattern()函数 461
24.75 setlinestyle()函数 463
24.74 setgraphmode()函数 463
24.73 setgraphbufsize()函数 463
24.76 setpalette()函数 465
24.77 setrgbpalette()函数 466
24.78 settextjustify()函数 467
24.79 settextstyle()函数 468
24.80 setusercharsize()函数 469
24.82 setvisualpage()函数 470
24.81 setviewport()函数 470
24.84 textattr()函数 472
24.83 setwritemode()函数 472
24.85 textbackground()函数 473
24.86 textolor()函数 474
24.87 textheight()函数 475
24.88 textmode()函数 476
24.89 textwidth()函数 477
24.91 window()函数 478
24.90 wherex()和wherey()函数 478
25.1 assert()函数 480
第25章 其他函数 480
25.3 atoi()函数 481
25.2 atof()函数 481
25.5 bsearch()函数 482
25.4 atol()函数 482
25.7 _control87()函数 484
25.6 _clear87()函数 484
25.9 ecvt()函数 485
25.8 div()函数 485
25.10 fcvt()函数 486
25.11 _fpreset()函数 487
25.13 itoa()函数 488
25.12 gcvt()函数 488
25.15 ldiv()函数 489
25.14 itoa()函数 489
25.16 lfind()和lsearch()函数 490
25.17 longjmp()函数 491
25.18 ltoa()函数 492
25.20 putenv()函数 493
25.19 nosound()函数 493
25.21 qsort()函数 494
25.22 raise()函数 495
25.24 random()和randomize()函数 496
25.23 rand()函数 496
25.25 setjmp()函数 497
25.27 sound()函数 498
25.26 signal()函数 498
25.28 srand()函数 499
25.30 strtod()函数 500
25.29 _status87()函数 500
25.31 strtol()函数 501
25.34 ultoa()函数 502
25.33 swab()函数 502
25.32 strtoul()函数 502
26.1 创建简单的图形--这里有颗星 504
第26章 Turbo C的图形 504
第三部分 应用实例 504
26.2 图形下的文本输出--给五角星刻上名字 507
26.3 闪耀的星 510
26.4 汉字技术 513
26.4.1 汉字平台下的汉字显示 513
26.4.2 西文DOS下的汉字显示 515
26.5 具有立体感界面的制作 517
26.5.1 立体汉字 517
26.5.2 具有凸凹感的消息框 520
26.6 人机界面的制作 522
26.6.1 文本状态下的菜单 522
26.6.2 图形状态下的菜单 524
26.6.3 Mouse的消息响应 532
第27章 高级图形创意 535
27.1 动画制作--飘动的红旗 535
27.2 使用256色Bitmap位图--给自己的软件上封面 537
27.3 16M真彩色图象显示--高质量封面制作 538
27.4 在高分辨率下的写点--突破VGA的限制 542
27.5 使用你自己喜爱的颜色--用流行色装点你的软件 544
第28章 调用系统外部硬件资源 546
28.1 测试显示卡能支持的分辨率和显示器的点距 546
28.2 关于键盘的响应代码 549
28.3 软盘驱动器中磁头的定位与调整--软驱兼容性测试 550
28.4 关于打印机 553
28.4.1 使用打印机内定的字体 553
28.4.2 屏幕图形打印 555
28.4.3 究竟是哪根针断了?--打印头断针检测 556
28.5 使用PC SPEAKER声音编程 557
29.1 中断的概念 559
29.2 多任务操作--背景声音 559
第29章 中断技术和串行通信 559
29.3 TSR技术--实时时钟 562
29.4 硬件中断和串通信 563
第30章 C语言用于工业自动控制系统 567
30.1 有关信号采集--A/D转换程序 567
30.2 控制执行机构的动作--D/A/和I/O转换程序 568
30.3 一个自动控制的实例 570
第31章 数据库编程 574
31.1 数据结构--通讯录的制作 574
31.2 使用.DBF数据库文件 579
附录A ANSI C与K RC的区别 581
附录B 编译错误信息 584