2.2标识符 2 1
1 8.5.7 ttyname 29 1
25.3.3 chown 35 1
25.3.4 mkdir 35 1
26.5.26[w]move 37 1
目 录 1
16.7.1 access 27 1
6.7.2修饰符readonly 8 1
5.4.4.3结构的初始化 6 1
5.3.4字符变量 5 1
16.7.2 clcarerr 27 1
第一章VAX C语言起步 1
1.1 C程序设计语言的背景 1
第一部分C编程语言 1
1.2 VAX C程序设计语言 2
1.3编写第一个程序 3
1.4输入/输出 4
1.5控制程序流 6
1.5.1 if语句 6
1.5.2开关(switch)语句 7
1.5.3循环 8
20.3程序实例 3 10
1.6值、地址和指针 10
9.1.2逻辑名 1 10
1.7.1数组与字符串 12
1.7集合 12
1.7.2结构与联合 13
2.1 函数定义 17
第二章程序结构 17
1 18
9.1.5.4 VAX C语言的缺省文本库 18
2.1.1主函数与函数标识符 20
2.1.2参数与自变量 20
2.3关键字 22
2.4块 23
2.5注释 24
1 24
9.2.5 VAX C语言与DEC/SHELL 24
第三章语句 25
3.1控制流语句 25
3.1.1空语句 25
3.1.2 goto语句 25
3.2.2复合语句 26
3.1.3带标号的语句 26
3.2表达式与块作为语句 26
3.2.1表达式语句 26
3.3条件语句 27
3.3.1 if语句 27
3.3.2开关(switch)语句 27
3.3.2.1开关语句内的说明 29
3.4循环语句 29
3.4.1 for语句 29
3.4.2 while语句 30
3.5.2 continue语句 31
3.5.1 break语句 31
3.5中断(Interruting)语句 31
3.4.3 do语句 31
3.5.3 rcturn语句 32
4.1左值与右值 33
第四章表达式与操作符 33
4.2初等表达式与操作符 34
4.2.1带括号的表达式 34
4.2.2函数调用 34
4.2.3数组引用(?) 35
4.2.4结构和联合的引用 35
43 VAX C语言操作符讨论 35
4.4一元表达式与操作符 38
4.4.1负运算与逻辑表达式(?) 38
44.2变量增1与减1(++--) 38
4.4.3求地址和间接指针( *) 39
4.4.4求反(~) 39
4.4.5强制转换成特定类型(cast运算符) 39
4.4.6计算变量与数据类型的大小 40
(sizcof) 40
4.5二元表达式与操作符 40
4.5.1加法运算符(+-) 40
4.5.2乘法运算符(*/%) 41
4.5.4关系操作符(><<=>=) 41
4.5.5遂位操作符( |∧) 41
4.5.3相等运算符(==!=) 41
4.5.6逻辑操作符( |) 42
4.5.7移位操作符(《》) 43
4.6条件表达式与操作符(?:) 43
4.7 赋值表达式与操作符(=+=-=* -/=) 43
4.8逗号表达式与操作符(,) 45
4.9数据类型转换 45
4.9.1操作对象的转换 45
4.9.2函数自变量的转换 46
第五章数据类型和说明 47
5.1常量、定义和说明 47
5.2函数返回值的数据类型 48
5.1.1变量说明的格式 48
5.2.1空数据类型 49
5.3.1整型常量 49
5.3标量的说明和类型 49
5.3.3字符常量 50
5.3.2整型变量 50
5.3.5浮点常数 51
5.3.3.1 转义序列 51
5.3.7指针 52
5.3.6浮点变量 52
5.3.8枚举类型 53
5.4.1数组 55
5.4集合类型的定义和初始化 55
5.4.1.1数组的初始化 56
11.2.5编译器诊断信息及出错情况 1 57
5.4.2字符串常量 57
5.4.3字符串变量 58
5.4.4结构和联合 58
5.4.4.1 结构和联合的说明 59
5.4.4.2结构或联合成员的引用 60
5.4.4.4位字段 62
5.5解释说明语句 63
5.6类型定义(Type def) 65
第六章存储类与存储分配 66
6.1 工作域 66
6.1.1编译和连接处理 66
6.1.2说明语句的位置 67
6.1.3编译域和连接域 68
6.1.4程序例子 68
6.2存储分配 70
6.2.1程序段的属性 70
6.2.2 VAX C语言产生的程序段 71
6.3内部存储类 72
6.3.1 说明符auto 73
6.3.2说明符register 74
6.4静态存储类 74
6.5外部存储类 75
12.2.7结束编辑过程 1 76
6.6全局存储类 76
6.6.1说明符globaldef和globalrcf 76
12.3控制程序执行 1 76
6.6.1.1 全局与外部存储类的比较 78
6.6.2说明符globalvalue 78
6.6.3全局枚举类型 79
6.7存储类修饰符 80
6.7.1 修饰符noshare 80
12.3.5 断点 1 80
7.1标记替换 82
第七章预处理器控制行 82
12.3.7观察点 1 83
7.1.1常量标识符 83
7.1.2预处理器替换 84
12.4.4程序变量的引用 1 85
7.1.3宏替换 85
124.4.2访问数组 1 86
7.1.5取消定义 86
7.1.4替换行的列表 86
7.2.1#dictionary控制行 87
12 4.4.3访问字符串 1 87
7.2公共数据字典的抽取 87
7.2.2 CDD支持的数据类型 88
7.3条件编译 90
7.4.1用角括号(<>)包含 91
7.4包含(Inclusion)文件 91
7.4.2用双引号(“”)包含 92
7.5行号的说明 93
7.4.3文本模块的包含 93
7.6模块名和标识的说明 94
9.1 Digital命令语言(DCL) 106
第九章程序开发导论 106
第二部分 使用VAX/VMS进行程序开发 106
第八章VAXC语言词汇表 106
9.1.1.2暂时缺省 108
9.1.1.1缺省文件说明 108
9.1.1 DCL文件说明 108
9.1.3改变当前目录 112
9.1.2.1逻辑名翻译 112
9.1.4使用命令程序 112
9.1.5库 114
9.1.5.1库命令句法 115
9.1.5.2文本库介绍 116
9.1.5.3定义缺省文本库 118
9.1.5.5 目标代码库介绍 119
9.1.5.6缺省目标模块库 120
9.2 DEC/SHELL 121
9.2.2 DEC/SHELL命令行句法 122
9.2.1 起动DEC/SHELL 122
9.2.3 有效的DEC/SHELL文件说明 123
9.2.4 I/O重定向 123
10.1编辑过程的控制 125
第十章使用EDT编写源程序 125
10.1.1起动编辑器 126
10.1.3中断编辑过程 128
10.1.2初始化编辑过程 128
10.1.6结束编辑过程 129
10.1.5 HELP EDT命令 129
10.1.4保护你的编辑 129
10.2.2编辑正存在的文件 130
10.2.1在行编辑模式下建立文件 130
10.2行编辑模式 130
10.2.3范围指定 131
10.2.4文本缓冲区 132
10.2.5文件中的操作 133
10.2.7删除和替换文本 134
10.2.6插入新文本 134
10.2.9替换文本 135
10.2.8移动文本 135
10.2.10将文本移到另外一个文件或从另外的文件中将文本移入 136
10.3屏幕编辑 137
1 0.3.1 进入屏幕模式和从屏幕模式退出 139
10.3.2屏幕模式中的HELP 139
10.3.3光标操作 140
10.3.5插入文本 141
10.3.4范围描述 141
10.3.7移动文本 142
10.3.6删除和恢复文本 142
10.4 日志文件选项 143
10.5.1结构化的制表符 144
10.5.2特殊目的的键定义 144
10.5 EDT对VAX C语言编程者的帮助 144
10.5.3起动命令文件 146
第十一章编译、连接和运行VAX C语言程序11.1程序的构成 148
11.2 CC命令 149
1 1.2.1 CC命令格式 149
11.2.2文件说明及编译单元 150
1 1.2.3指定库文件 150
11.2.4命令限定词 151
1 1.3 Link命令 159
11.3.1 Link命令格式 160
1 1.3.2连接器输入文件 161
1 1.3.3指定映象文件限定词 162
1 1.3.6连接器输出文件 163
11.3.5连接器信息 163
1 1.3.4指定调试程序限定词 163
11.4.1用RUN命令执行映象 164
11.4 RUN命令 164
11.4.2命令行参数 165
11.4.3映象退出 166
11.4.4运行时间错误 166
11.4.5中断程序 167
11.4.6返回DCL解释器的值 168
12.1 VAX C语言调试过程样本 170
第十二章调试VAX C语言程序 170
12.2控制调试过程 172
12.2.1起动调试器 173
12.2.3初始化调试过程 174
12.2.2使用调试器命令程序 174
12.2.5中断调试过程 175
12.2.4在日志文件中记录调试过程 175
12.3.1调试器命令 176
12.2.6 HELP命令 176
12.3.2 GO命令 177
12.3.3 STEP命令 177
12.3.4进入函数和自函数中返回 179
12.3.6跟踪点 182
12.4运行时间符号表 183
12.4.1调试器常驻符号 184
12.4.2全局符号的引用 184
12.4.3程序位置的引用 184
12.4.4.1访问标量变量 185
1 2.4.4.4访问结构与联合 188
12.4.5控制工作域及运行时间符号表 191
12.4.5.1控制变量的工作域 193
12.5.1小键盘模式 195
12.5调试器选项 195
12.5.2屏幕模式 196
12.6对VAX C语言表达式的支持 199
第十三章使用VAX记录管理服务(RMS)13.1 RMS文件组织 202
13.1.1顺序文件组织 203
13.1.3索引文件组织 203
13.1.2相对文件组织 203
13.2记录访问模式 204
13.3 RMS记录格式 204
13.4 RMS函数 205
13.5用RMS写VAXC语言程序 206
1 3.5.1初始化文件访问块 207
1 3.5.2初始化记录访问块 208
13.5.3初始化扩展特征块 208
13.5.4初始化名称块 209
13.6 RMS程序例子 209
14.1调用栈 222
14.1.1 调用帧 222
第十四章混合语言编程 222
14.1.2参数表 223
14.2 由立即值来传递参数 224
14.2.1检查系统服务返回值 226
14.2.2由立即值传递浮点参数 227
14.3由引用传递参数 228
14.4由描述符传递参数 230
14.5可变长度参数表 232
14.6.1返回状态值格式 234
14.6返回状态值 234
14.6.2操纵返回状态值 235
14.6.3测试成功或者失败 236
14.6.4测试特定的返回状态值 237
14.7与用其它语言编写的过程共享数据 238
14.7.2与PL/I外部变量共享程序段 238
语句共享的程序段 238
14.7.1 与FORTRAN的Common块 238
1 4.7.3与MACRO程序共享程序段 240
15.1 VAX C语言运行时间库的实现 243
第十五章VAX C语言运行时间库 243
第三部分VAX C语言运行时间库 243
15.1.1把VAXC语言RTL当作可共享 244
15.1.2宏 244
的映象使用 244
15.2 VAX C语言RTL的函数和宏的句法 246
15.2.1 DEC/Shell文件说明 247
15.3在VAX/VMS上的输入和输出 248
1 5.3.1 RMS记录和文件的格式 250
15.3.2流式访问RMS记录文件 251
15.4可移植性涉及的具体问题 253
第十六章标准输入/输出函数及宏指令16.1标准输入/输出及文件存取 257
16.2.1输入信息的转化 258
16.2转化规范 258
16.2.2输出信息的转化 260
16.3打开和关闭文件 261
16.3.1 fclose 261
16.3.3 fopen 262
16.3.2 fdopcn 262
16.3.4 freopen 263
16.4从文件中读出数据 263
16.4.1 getc,fgetc,getw 264
16.4.2 getw 264
16.4.3 getc 264
1 6.4.4 fgets 264
16.4.5 frcad 265
16.4.6 fscanf,sscanf 265
16.4.7 sscanf 266
16.5.1 fprintf,sprintf 267
16.5.2 fput 267
16.5.3 fputs 267
16.5 写入文件 267
16.4.8 ungetc 267
16.5.4 fwrite 268
16.5.5 putc,fPutc,putw 268
16.6.1 fflush 269
16.6.2 fseek 269
16.6文件操作 269
16.5.7 sprintf 269
16.5.6 putw 269
16.6.4 rcwind 270
16.6.3 ftcll 270
16.7附加的标准输入/输出函数与宏指令 271
16.7.3 delete 272
16.7.4 fcof 272
16.7.5 ferror 272
16.7.6 fgetname 272
16.7.7 mktemp 273
16.7.8 setbuf 273
16.7.10 tmpnam 274
16.7.9 tmpfile 274
1 6.8程序实例 274
17.2.1 getchar 276
第十七章终端输入与输出函数 276
17.2终端输入输出函数 276
17.1终端输入输出与定义的文件指针 276
17.2.2 gets 276
17.2.3 printf 277
17.2.5 puts 278
17.2.6 scanf 278
17.2.4 putchar 278
17.3程序实例 279
第十八章UNIX输入/输出函数与宏指令18.1 UNIX输入/输出及文件描述 281
18.2打开和关闭文件 282
18.2.1 close 282
18.2.2 create 282
18.2.3 dup,dup2 284
18.2.4 dup2 285
18.2.5 open 285
1 8.3.1 read 286
18.3读出与写入 286
1 8.4文件中指针的定位 287
18.3.2 write 287
18.4.1 lseek 287
18.5.1 fileno 288
18.5附加的UNIX输入/输出函数及宏指令 288
18.5.2 fstat.stat 289
18.5.3 getname 290
18.5.4 isapipe 290
18.5.5 isatty 291
18.5.6 stat 291
18.6程序实例 292
19.1字符归类宏指令 293
第十九章字符处理函数及宏指令 293
19.1.1 isalnum 295
19.1.2 isalpha 296
19.1.3 isascii 296
19.1.4 iscntrl 296
19.1.10 isspacc 297
1 9.1.9 ispunct 297
1 9.1.7 islower 297
19.1.6 isgraph 297
1 9.1.8 isprint 297
19.2字符转换函数及宏指令 298
19.2.1 ecvt,fcvt,gcvt 298
19.1.11 issupper 298
19.1.12 isxdigit 298
19.2.3 gcvt 299
19.2.4 toascii 299
19.2.5 tolower.tolower 299
19.2.2 fcvt 299
19.2.6 toupper,toupper 300
19.2.7_tolower 300
19.2.8_touppcr 300
19.3程序实例 300
第二十章字符串及表格处理函数与宏指令20.1字符串操作 303
20.1.1 atof,atoi,atol 303
20.1.2 atoi 304
20.1.4 strcat,strncat 304
20.1.5 strchr,strrchr 304
20.1.3 atol 304
20.1.7 strcpy.strucpy 305
20.1.6 strcmp,strncmp 305
20.1.8 strcspn 306
20.1.9 strlen 306
20.1.10 strncat 306
20.1.11 strncmp 306
20.1.12 strncpy 306
20.1.1 3 strpbrk 306
20.2访问可变长度参数表 307
20.1.14 strrchr 307
20.1.15 strspn 307
20.2.2 va count 308
20.2.1 va arg 308
20.2.3 va end 309
20.2.4 va start.va__startl 309
20.2.5 va__start_l 309
第二十一章数学函数 312
21.1数学函数和errno定义模块 312
21.1.1 abs、fabs 313
21.1.2 acos 313
21.1.3 asin 313
21.1.4 atan 313
21.1.5 atan2 313
21.1.10 exp 314
21.1.6 cabs 314
21.1.7 ceil 314
21.1.8 cos 314
21.1.9 cosh 314
21.1.15 Idexp 315
21.1.13 frexp 315
21.1.14 hypot、cabs 315
21.1.12 floor 315
21.1.1 1 fabs 315
21.1.16 log、log10 316
21.1.17 log10 316
21.1.19 pow 316
21.1.18 modf 316
21.1.20 rand、srand 317
21.1.21 sin 317
21.1.22 sinh 317
21.1.23 sqrt 317
21.1.24 srand 318
21.1.25 tan 318
21.1.26 tanh 318
21.2程序举例 319
第二十二章错误处理函数 320
22.1错误处理函数 320
22.1.1 abort 321
22.1.2 exit,_exit 321
22.1.3 perror 322
22.2信号处理函数 322
22.1.4__exit 322
22.2.1 alarm 323
22.2.2 gsignal 324
22.2.3 kill 325
22.2.4 longjmp、setjmp 325
22.2.5 pause 326
22.2.6 setjmp 326
22.2.7 sigblock 326
22.2.8 signal 327
22.2.9 sigpause 327
22.2.10 sigsetmask 328
22.2.1 1 sigstack 328
22.2.12 sigvec 328
22.2.13 sleep 329
22.2.14 ssignal 329
22.3程序举例 330
22.2.15 VAX C$ESTABLISH 330
第二十三章内存分配函数 332
23.1 VAX C语言与内存分配 332
23.1.1 brk、sbrk 332
23.1.2 calloc、malloc(内存分配) 333
23.1.3 cfrce、free(内存释放) 333
23.1.4 free 333
23.1.5 malloc 334
23.1.6 realloc(内存重分配) 334
23.1.7 sbrk 334
23.2程序举例 334
24.1 VAX C语言与子进程 336
第二十四章子进程函数 336
24.2 VAX C语言中子进程的实现 336
24.3.1 execl、execle、exeev、execve 338
24.3 exec函数 338
24.3.2 Exee处理 339
24.3.3 Exec错误条件 339
24.4.1 wait 340
24.5读写数据 340
24.5.1 pipe 340
24.4进程同步 340
24.6程序举例 343
第二十五章系统函数 348
25.1 VAX C语言和系统程序设计 348
25.2检索进程信息 348
25.2.1 ctermid 348
25.2.2 cavseid 348
25.2.5 geteuid 349
25.2.4 getenv 349
25.2.3 getegid、geteuid、getgid、getuid 349
25.2.6 getgid 350
25.2.8 getuid 350
25.3修改进程信息 350
25.3.1 chdir 350
25.3.2 chmod 350
25.2.7 getpid 350
25.3.5 nice 352
25.3.6 setgid、setuid 352
25.3.7 setuid 352
25.3.8 umask 353
25.4检索时间信息 353
25.4.1 ctime 353
25.4.2 ftime 353
25.4.4 time 354
25.4.3 localtime 354
25.4.5 times 355
25.5.程序举例 355
26.1.1用户定义的窗口 359
第二十六章curses屏幕管理函数 359
26.1 Curses术语 359
26.2开始用Curses 360
26.3预定义变量和常数 362
26.4光标移动 363
26.5 Curses函数和宏 364
26.5.1 [W]addch 364
26.5.2 [W]addstr 364
26.5.3 box 365
26.5.4 [W]clear 365
26.5.5 clearok 365
26.5.8[W]clrtoeol 366
26.5.9[no]crmode 366
26.5.7[W]clrtobot 366
26.5.6 [W]clrattr 366
26.5.13[no]echo 367
26.5.1 1 [w]deleteln 367
26.5.12 delwin 367
26.5.10[W]delch 367
26.5.14 endwin 368
26.5.15 [w]erase 368
26.5.16 [w]geteh 368
26.5.1 7[w]getstr 368
26.5.18 getyx 369
26.5.19[w]inch 369
26.5.20 initscr 369
26.5.2 1[w]insch 369
26.5.22[w]insertln 370
26.5.23 [w]insstr 370
26.5.24 longname 370
26.5.27 mv[w]addch 371
26.5.25 leaveok 371
26.5.28 mv[w]addstr 372
26.5.29 mvcur 372
26.5.30 mv[w]delch 372
26.5.31 mv[w]getch 372
26.5.34 mv[w]insch 373
26.5.35 mv[w]insstr 373
26.5.33 mv[w]inch 373
26.5.32 mv[w]getstr 373
26.5.36 mvwin 374
26.5.37 newwin 374
26.5.38 [no]nl 374
26.5.39 overlay 375
26.5.40 overwrite 375
26.5.41 [w]printw 375
26.5.42[no]ra.w 375
26.5.46 scrollok 376
26.5.45 scroll 376
26.5.43[w]refresh 376
26.5.44[w]scanw 376
26.5.47[w]setattr 377
26.5.48 subwin 377
26.5.49 [w]standend 378
26.5.50[w]standout 378
26.5.51 touchwin 378
26.5.52 wrapok 378
26.6程序举例 379
附录A VAX C语言RTL(运行时间库)与其它C语言工具的RTLS(运行时间库) 382
附录B VAX C语言定义模块 393
附录C VAX C运行时间模块和入口点 395
附录D VAX C语言编译器消息 405
附录E VAX C编译程序的列表格式 425
附录F VAX/VMS符号调试器命令和限定 436
词 436