C语言的常用库函数学习(四)

来源:岁月联盟 编辑:zhu 时间:2009-02-27

MK_FP()设置一个远指针的宏
原形:void far *MK_FP(unsigned seg,unsigned ofs)
功能:通过段值(seg)和偏移量(ofs)建立一个远指针
返回值:远指针
头文件:dos.h

movedata()拷贝数据函数
原形:void movedata(unsigned srcseg,unsigned srcoff,unsigned dstseg,unsigned dstoff,size_t n)
功能:从原地址(srcseg:srcoff)拷贝n个字节的数据到目标地址(dstseg:dstoff)。
头文件:mem.h、string.h

_open()打开一个文件进行读写的函数
原形:int _open(path,oflags)
   char *path;//已建立文件的路径名
   int oflags;//方式
功能:打开由path指定的文件,返回文件的句柄
返回值:0(正常结束);-1(错误)
头文件:fcntl.h、io.h

open()打开文件进行读写的函数
原形:int open(const char *path,int access[,unsigned mode])
使用方法:文件句柄=open(/"文件名/",打开模式|打开模式);
功能:打开path指定的文件,根据access指定的模式值读写。
  access模式:
   O_RDONLY 以只读方式打开
   O_WRONLY 以只写方式打开
   O_RDOWR  以读写方式打开
  以上标志只能使用一个,以下可以用|组合使用
   O_NDELAY
   O_APPEND 若置位,每次写操作前都使文件指针指到文件末尾
   O_CREAT  若文件不存在则创建
   O_TRUNC  若文件已存在,则将文件长度截为0
   O_EXCL  只和O_CREAT一起使用,若文件已经存在,返回错误代码
   O_BINARY 以二进制方式打开
   O_TEXT  以文本方式打开
  如果使用了O_CREAT方式,则需要提供参数mode
  (S_IWRITE可写;S_IREAD可读;S_IREAD|S_IWRITE可读写)
返回值:文件句柄(成功时);-1(失败时)。
    成功时,文件指针指向文件头。
头文件:fcntl.h、io.h

outport()输出一个字到端口中的函数
原形:void outport(int portid,int value)
调用方式:outport(0x端口号,要输出的字);
功能:往指定端口地址输出一个字。
头文件:dos.h

outportb()输出一个字节到端口中的函数
原形:void outportb(int portid,unsigned char value)
调用方式:outportb(0x端口号,要输出的字节);
功能:往指定端口地址输出一个字节。
附:PC I/O地址分配
  PC只用了10位地址线(A0-A9)进行译码,其寻址的范围为0H-3FFH,共有1024个I/O地址。这1024个地址中前半段(A9=0,范围为0H-1FFH)是属于主机板I/O译码,后半段(A9=1,范围为200H-3FFH)则是用来扩展插槽上的I/O译码用。
         I/O端口功能表
———————————————————————————
I/O地址 功能、用途
———————————————————————————
0    DMA通道0,内存地址寄存器(DMA控制器1(8237))
1    DMA通道0, 传输计数寄存器
2    DMA通道1,内存地址寄存器
3    DMA通道1, 传输计数寄存器
4    DMA通道2,内存地址寄存器
5    DMA通道2, 传输计数寄存器
6    DMA通道3,内存地址寄存器
7    DMA通道3, 传输计数寄存器
8    DMA通道0-3的状态寄存器
AH    DMA通道0-3的屏蔽寄存器
BH    DMA通道0-3的方式寄存器
CH    DMA清除字节指针[Page]
DH    DMA主清除字节
EH    DMA通道0-3的清屏蔽寄存器
FH    DMA通道0-3的写屏蔽寄存器
19H   DMA起始寄存器
20H-3FH 可编程中断控制器1(8259)使用
40H   可编程中断计时器(8253)使用,读/写计数器0
41H   可编程中断计时器寄存器
42H   可编程中断计时器杂项寄存器
43H   可编程中断计时器,控制字寄存器
44H   可编程中断计时器,杂项寄存器(AT)
47H   可编程中断计时器,计数器0的控制字寄存器
48H-5FH 可编程中断计时器使用
60H-61H 键盘输入数据缓冲区
61H   AT:8042键盘控制寄存器/XT:8255输出寄存器
62H   8255输入寄存器
63H   8255命令方式寄存器
64H   8042键盘输入缓冲区/8042状态
65H-6FH 8255/8042专用
70H   CMOS RAM地址寄存器
71H   CMOS RAM数据寄存器
80H   生产测试端口
81H   DMA通道2,页表地址寄存器
82H   DMA通道3,页表地址寄存器
83H   DMA通道1,页表地址寄存器
87H   DMA通道0,页表地址寄存器
89H   DMA通道6,页表地址寄存器
8AH   DMA通道7,页表地址寄存器
8BH   DMA通道5,页表地址寄存器
8FH   DMA通道4,页表地址寄存器
93H-9FH DMA控制器专用
A0H   NM1屏蔽寄存器/可编程中断控制器2
A1H   可编程中断控制器2屏蔽
C0H   DMA通道0,内存地址寄存器(DMA控制器2(8237))
C2H   DMA通道0, 传输计数寄存器
C4H   DMA通道1,内存地址寄存器
C6H   DMA通道1, 传输计数寄存器
C8H   DMA通道2,内存地址寄存器
CAH   DMA通道2, 传输计数寄存器
CCH   DMA通道3,内存地址寄存器
CEH   DMA通道3, 传输计数寄存器
D0H   DMA状态寄存器
D2H   DMA写请求寄存器
D4H   DMA屏蔽寄存器
D6H   DMA方式寄存器
D8H   DMA清除字节指针
DAH   DMA主清
DCH   DMA清屏蔽寄存器
DEH   DMA写屏蔽寄存器
DFH-EFH 保留
F0H-FFH 协处理器使用
100H-16FH保留
170H   1号硬盘数据寄存器
171H   1号硬盘错误寄存器
172H   1号硬盘数据扇区计数
173H   1号硬盘扇区数
174H   1号硬盘柱面(低字节)
175H   1号硬盘柱面(高字节)
176H   1号硬盘驱动器/磁头寄存器
177H   1号硬盘状态寄存器
1F0H   0号硬盘数据寄存器
1F1H   0号硬盘错误寄存器
1F2H   0号硬盘数据扇区计数
1F3H   0号硬盘扇区数
1F4H   0号硬盘柱面(低字节)
1F5H   0号硬盘柱面(高字节)
1F6H   0号硬盘驱动器/磁头寄存器
1F7H   0号硬盘状态寄存器
1F9H-1FFH保留
200H-20FH游戏控制端口
210H-21FH扩展单元
278H   3号并行口,数据端口
279H   3号并行口,状态端口
27AH   3号并行口,控制端口
2B0H-2DFH保留
2E0H   EGA/VGA使用
2E1H   GPIP(0号适配器)
2E2H   数据获取(0号适配器)
2E3H   数据获取(1号适配器)
2E4H-2F7H保留
2F8H   2号串行口,发送/保持寄存器(RS232接口卡2)
2F9H   2号串行口,中断有效寄存器
2FAH   2号串行口,中断ID寄存器
2FBH   2号串行口,线控制寄存器
2FCH   2号串行口,调制解调控制寄存器
2FDH   2号串行口,线状态寄存器
2FEH   2号串行口,调制解调状态寄存器
2FFH   保留[Page]
300H-31FH原形卡
320H   硬盘适配器寄存器
322H   硬盘适配器控制/状态寄存器
324H   硬盘适配器提示/中断状态寄存器
325H-347H保留
348H-357H DCA3278
366H-36FH PC网络
372H    软盘适配器数据输出/状态寄存器
375H-376H 软盘适配器数据寄存器
377H    软盘适配器数据输入寄存器
378H    2号并行口,数据端口
379H    2号并行口,状态端口
37AH    2号并行口,控制端口
380H-38FH SDLC及BSC通讯
390H-393H Cluster适配器0
3A0H-3AFH BSC通讯
3B0H-3B H MDA视频寄存器
3BCH    1号并行口,数据端口
3BDH    1号并行口,状态端口
3BEH    1号并行口,控制端口
3C0H-3CFH EGA/VGA视频寄存器
3D0H-3D7H CGA视频寄存器
3F0H-3F7H 软盘控制器寄存器
3F8H    1号串行口,发送/保持寄存器(RS232接口卡1)
3F9H    1号串行口,中断有效寄存器
3FAH    1号串行口,中断ID寄存器
3FBH    1号串行口,线控制寄存器
3FCH    1号串行口,调制解调控制寄存器
3FDH    1号串行口,线状态寄存器
3FEH    1号串行口,调制解调状态寄存器
3FFH    保留
—————————————————————————-

outtextxy()在指定位置显示一字符串的函数
原形:void far outtextxy(int x,int y,char far *textstring)
功能:按照当前对齐方式和当前字体、方向、大小在视区中给定位置显示一文本字符串。
注意:用textwidth和textheight函数决定字符串的尺寸大小。
头文件:graphics.h

peek()返回指定内存中字的函数
原形:int peek(int seg,unsigned offset)
功能:返回地址为seg:offset的字单元的值
头文件:dos.h

peekb()返回指定内存中字节的函数
原形:char peekb(int seg,unsigned offset)
功能:返回地址为seg:offset的字节单元的值

poke()在指定的内存中存储一个字的函数
原形:void poke(int seg,unsigned offset,int word)
功能:把word的16位值放到地址为seg:offset的字单元中

pokeb()在指定的内存中存储一个字节的函数
原形:void pokeb(int seg,unsigned offset,int byte)
功能:把byte的8位值放到地址为seg:offset的字节单元中

pow()
原形∶double pow(double b,double exp)
功能∶求以b为底的exp次幂的值
头文件∶math.h

printf()写格式化输出到stdout的函数
使用方式:例
  ①printf(/"%f/",实型变量);
  ②printf(/"%f/",(*函数指针名)(参数));
  ③printf(/"%c/",字符变量);
  ④printf(/"%c/",*字符串变量名即字符串地址);
   只显示字符串的第一个字符。
  ⑤printf(/"%s/",字符串数组名即字符串数组地址);
  ⑥printf(/"%-10s/",字符串变量名);
   显示字符串时限定十位(不足则补空格),并靠左端对齐。
  ⑦printf(/"%s/",*二级指针变量);
  ⑧printf(/"字符串d//n/",整型变量);
   先显示字符串,然后显示整型变量的值(限五位,不足则补零),最后换行。
注:
 1.① 需先定义 float 实型变量;
  ② 需先定义 float (*函数指针名)(); 并有相应的函数
  ③ 需先定义 char 字符变量=/'单个字符/';
  ④⑥需先定义 char *字符串变量名; 并赋值
  ⑤ 需先定义 char 字符串数组名[]=/"字符串/";[Page]
  ⑦ 需先定义 char **二级指针变量
 2.其它转换字符(在%后)有
  ① o 整型数以无符号的八进制形式输出
  ② x 整型数和伪变量以无符号的十六进制形式输出
  ③ u 整型数以无符号的十进制形式输出
  ④ e 浮点数或双精度浮点数以指数形式输出
  ⑤ g 选用e或f格式中输出位数较短的形式
  ⑥ p 以无符号的十六进制形式输出变量的地址。若要输出函数的地址,远指针用Fp;近指针用Np。

putch()向屏幕输出字符的函数
使用方式:
 ① putch(/'转义字符/');
 ② putch(/'单个字符/');
 ③ putch(字符变量);
注:③需先定义 char 字符变量=/'单个字符/';
头文件:conio.h

putchar()在stdout上输出字符的宏
原形:int putchar(int c)
返回值:成功返回字符c,失败返回EOF。
头文件:stdio.h

putenv()将字符串放入当前环境中的函数
原形:int putenv(const char *name)
用法例:putenv(/"PATH=C://B//TC/");
功能:把字符串name加到当前程序运行的环境中。当程序结束后,原环境将得到恢复。
返回值:0(成功);-1(失败)
头文件:stdlib.h

putimage()重新写屏函数(输出一个位图象到图形屏幕上的函数)
功能:将用getimage()函数储存在buf 所指向的内存区域的图形输出到屏幕上。
原形:
 void far putimage(int left,int top,void far *buf,int op)
  其中op的值决定了图形以何种方式写到屏幕上。
  COPY_PUT 或0 原样复制
  XOR_PUT 或1 与屏幕图形取“异或”后写入
  OR_PUT 或2 与屏幕图形取“或”后写入
  AND_PUT 或3 与屏幕图形取“与”后写入
  NOT_PUT 或4 复制原图形的“逆”
  使用不同的方式将图形写到屏幕上,可以实现图形变换。例如,采用异或方式在原始位置重写,那么,原图将消失。 如果再使用复制方式(COPY_PUT)在一个新的地方重现该图形,就产生了图形的移动。
头文件:graphics.h

putpixel()写像素点函数
原形:void far putpixel(int x,int y,int color)
头文件:graphics.h

puts()输出一字符串到stdout(标准输出)的函数 使用方式:
  ① puts(/"字符串/");
  ② puts(字符串变量名即字符串变量的地址)
注:②需先定义 char *字符串变量名=/"字符串/";
头文件:stdio.h

_read()读文件函数
原形:int _read(handle,buffer,count)
   int handle;//文件句柄
   void *buffer;//存放读出数据的缓冲区
   unsigned count;//一次读出的字节数
功能:从由handle指定的文件中读取由count指定字节数的数据到buffer
返回值:0-0xfffe(实际读出的字节数);-1(错误)
头文件:io.h

read()读文件函数
原形:int read(int handle,void *buf,unsigned len)
功能:从与handle(从creat、open、dup或dup2调用中得到的句柄)相联的文件中读取len字节到由buf所指的缓冲区中。对于以文本方式打开的文件,read删除读入数据中的回车符。当读到Ctrl-Z字符时返回文件结束。对于磁盘文件,read从当前文件指针处开始读取数据。在读操作完成后,文件指针增量为读入的字节数。对于设备,直接从设备中读字节。
返回值:读入缓冲区的字节数,如果文件以文本方式打开,则不包括回车符和Ctrl-Z字符。
头文件:io.h

realloc()重新分配内存函数[Page]
原形:void *realloc(void *block,size_t size)
   block指向用malloc、calloc或realloc已得到的内存。
   size是重新分配的字节。
返回值:重分配的块地址。若不能重分配,则返回NULL。
头文件:stdlib.h

rectangle()画一个矩形的函数
原形:void far rectangle(int left,int top,int right,int bottom)
功能:用当前线性、宽度和画线颜色绘制一个矩形。
头文件:graphics.h

remove()删除一个文件的函数
原形:int remove(const char *filename)
返回值:0(成功);-1(失败)
头文件:stdio.h

图片内容