




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言的常用库函数使用方法分析及用途absread()读磁盘绝对扇区函数 原形:int absread(int drive,int num,int sectnum,void *buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。参数:drive=0对应A盘,drive=1对应B盘。返回值:0:成功;-1:失败。头文件:dos.habswrite()写磁盘绝对扇区函数原形:int abswrite(int drive,int nsects,int lsect,void *buffer)drive=0(A驱动器)、1(B驱动器)、nsects=要写的扇区数(最多64K个);lsect=起始逻辑扇区号;buffer=要写入数据的内存起始地址。功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。返回值:0:成功;-1:失败。头文件:dos.hatof()将字符串转换成浮点数的函数原形:double atof(const char *s)功能:把s所指向的字符串转换成double类型。s格式为:符号数字.数字E符号数字返回值:字符串的转换值。头文件:math.h、stdlib.hatoi()将字符串转换成整型数的函数原形:int atoi(const char *s)功能:把s所指向的字符串转换成int类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.hatol()将字符串转换成长整型数的函数原形:long atol(const char *s)功能:把s所指向的字符串转换成long int类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.hbcd()把一个数转换成对应的BCD码的函数原形:bcd bcd(int x)bcd bcd(double x)bcd bcd(double x,int decimals)注意:BCD码的精度可达17位。参数decimals是可选的,用来指定转换后小数点后的位数。头文件:bcd.hbdos()原形int bdos(int fnum,unsigned dx,unsigned al)其中fnum是系统调用号;dx是传给寄存器DX的值;al是传给寄存器AL的值;功能DOS系统调用(INT21H)返回值AX中的值biosdisk()调用BIOS磁盘驱动程序函数原形:char biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)功能:使用中断0x13,直接调用BIOS进行磁盘操作参数:(1)cmd:2-数据以每扇区512字节的格式读入buffer,起始扇区由head、track和sector定,扇区数由nsects定。3-将buffer中的数据按每扇区512字节写入磁盘。4-对扇区进行数据校验。6-格式化一个磁盘并对化扇区设置化标志。8-返回当前驱动器参数在buffer的前4个字节中。10-长读,每扇区读入512字节加上额外的4个字节。11-长写,每扇区写入512字节加上额外的4个字节。(2)drive:0-第一个软驱;1-第二个软驱;0x80-第一个硬驱(3)head:磁头(4)track:磁道(5)sector:扇区(6)nsects:扇区数(7)buffer:数据缓冲区,定义为unsigned char buffer;返回值:0x00-操作成功0x01-错误命令0x03-企图写具有写保护的磁盘0x07-驱动器参数设置错误0x10-磁盘读/CRC/ECC错误头文件:bios.h注:对于硬盘主引导记录扇区head=0,track=0,sector=1 outport()输出一个字到端口中的函数原形:void outport(int portid,int value)调用方式:outport(0x端口号,要输出的字);功能:往指定端口地址输出一个字。头文件:dos.houtportb()输出一个字节到端口中的函数原形: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地址功能、用途0DMA通道0,内存地址寄存器(DMA控制器1(8237)1DMA通道0, 传输计数寄存器2DMA通道1,内存地址寄存器3DMA通道1, 传输计数寄存器4DMA通道2,内存地址寄存器5DMA通道2, 传输计数寄存器6DMA通道3,内存地址寄存器7DMA通道3, 传输计数寄存器8DMA通道0-3的状态寄存器AH DMA通道0-3的屏蔽寄存器BH DMA通道0-3的方式寄存器CH DMA清除字节指针DH DMA主清除字节EH DMA通道0-3的清屏蔽寄存器FH DMA通道0-3的写屏蔽寄存器19HDMA起始寄存器20H-3FH可编程中断控制器1(8259)使用40H可编程中断计时器(8253)使用,读/写计数器041H可编程中断计时器寄存器42H可编程中断计时器杂项寄存器43H可编程中断计时器,控制字寄存器44H可编程中断计时器,杂项寄存器(AT)47H可编程中断计时器,计数器0的控制字寄存器48H-5FH可编程中断计时器使用60H-61H键盘输入数据缓冲区61HAT:8042键盘控制寄存器/XT:8255输出寄存器62H8255输入寄存器63H8255命令方式寄存器64H8042键盘输入缓冲区/8042状态65H-6FH8255/8042专用70HCMOS RAM地址寄存器71HCMOS RAM数据寄存器80H生产测试端口81HDMA通道2,页表地址寄存器82HDMA通道3,页表地址寄存器83HDMA通道1,页表地址寄存器87HDMA通道0,页表地址寄存器89HDMA通道6,页表地址寄存器8AHDMA通道7,页表地址寄存器8BHDMA通道5,页表地址寄存器8FHDMA通道4,页表地址寄存器93H-9FHDMA控制器专用A0HNM1屏蔽寄存器/可编程中断控制器2A1H可编程中断控制器2屏蔽C0HDMA通道0,内存地址寄存器(DMA控制器2(8237)C2HDMA通道0, 传输计数寄存器C4HDMA通道1,内存地址寄存器C6HDMA通道1, 传输计数寄存器 C8HDMA通道2,内存地址寄存器CAHDMA通道2, 传输计数寄存器CCHDMA通道3,内存地址寄存器CEHDMA通道3, 传输计数寄存器D0HDMA状态寄存器D2HDMA写请求寄存器D4HDMA屏蔽寄存器D6HDMA方式寄存器D8HDMA清除字节指针DAHDMA主清DCHDMA清屏蔽寄存器DEHDMA写屏蔽寄存器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 保留300H-31FH原形卡320H 硬盘适配器寄存器322H 硬盘适配器控制/状态寄存器324H 硬盘适配器提示/中断状态寄存器325H-347H保留348H-357HDCA3278366H-36FHPC网络372H 软盘适配器数据输出/状态寄存器375H-376H软盘适配器数据寄存器377H 软盘适配器数据输入寄存器378H 2号并行口,数据端口379H 2号并行口,状态端口37AH 2号并行口,控制端口380H-38FHSDLC及BSC通讯390H-393HCluster适配器03A0H-3AFHBSC通讯3B0H-3B HMDA视频寄存器3BCH 1号并行口,数据端口3BDH 1号并行口,状态端口3BEH 1号并行口,控制端口3C0H-3CFHEGA/VGA视频寄存器3D0H-3D7HCGA视频寄存器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.hpeek()返回指定内存中字的函数原形:int peek(int seg,unsigned offset)功能:返回地址为seg:offset的字单元的值头文件:dos.hpeekb()返回指定内存中字节的函数原形: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.hprintf()写格式化输出到stdout的函数使用方式:例printf(%f,实型变量);printf(%f,(*函数指针名)(参数);printf(%c,字符变量);printf(%c,*字符串变量名即字符串地址);只显示字符串的第一个字符。printf(%s,字符串数组名即字符串数组地址);printf(%-10s,字符串变量名);显示字符串时限定十位(不足则补空格),并靠左端对齐。printf(%s,*二级指针变量);printf(字符串%05dn,整型变量);先显示字符串,然后显示整型变量的值(限五位,不足则补零),最后换行。注:1. 需先定义 float 实型变量; 需先定义 float (*函数指针名)(); 并有相应的函数 需先定义 char 字符变量=单个字符;需先定义 char *字符串变量名; 并赋值 需先定义 char 字符串数组名=字符串; 需先定义 char *二级指针变量2.其它转换字符(在%后)有 o 整型数以无符号的八进制形式输出 x 整型数和伪变量以无符号的十六进制形式输出 u 整型数以无符号的十进制形式输出 e 浮点数或双精度浮点数以指数形式输出 g 选用e或f格式中输出位数较短的形式 p 以无符号的十六进制形式输出变量的地址。若要输出函数的地址,远指针用Fp;近指针用Np。putch()向屏幕输出字符的函数使用方式: putch(转义字符); putch(单个字符); putch(字符变量);注:需先定义 char 字符变量=单个字符;头文件:conio.hputchar()在stdout上输出字符的宏原形:int putchar(int c)返回值:成功返回字符c,失败返回EOF。头文件:stdio.hputenv()将字符串放入当前环境中的函数原形:int putenv(const char *name)用法例:putenv(PATH=C:BTC);功能:把字符串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.hputpixel()写像素点函数原形:void far putpixel(int x,int y,int color)头文件:graphics.hputs()输出一字符串到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.hread()读文件函数原形:int read(int handle,void *buf,unsigned len)功能:从与handle(从creat、open、dup或dup2调用中得到的句柄)相联的文件中读取len字节到由buf所指的缓冲区中。对于以文本方式打开的文件,read删除读入数据中的回车符。当读到Ctrl-Z字符时返回文件结束。对于磁盘文件,read从当前文件指针处开始读取数据。在读操作完成后,文件指针增量为读入的字节数。对于设备,直接从设备中读字节。返回值:读入缓冲区的字节数,如果文件以文本方式打开,则不包括回车符和Ctrl-Z字符。头文件:io.hrealloc()重新分配内存函数原形:void *realloc(void *block,size_t size)block指向用malloc、calloc或realloc已得到的内存。size是重新分配的字节。返回值:重分配的块地址。若不能重分配,则返回NULL。头文件:stdlib.hrectangle()画一个矩形的函数原形:void far rectangle(int left,int top,int right,int bottom)功能:用当前线性、宽度和画线颜色绘制一个矩形。头文件:graphics.hremove()删除一个文件的函数原形:int remove(const char *filename)返回值:0(成功);-1(失败)头文件:stdio.hrename()文件改名函数原形:int rename(const char *oldname,const char *newname)注意:如果newname中包含了一个驱动器指示符,它必须与oldname中给出的指示符相同。oldname和newname中的目录可以不同,因此rename函数把文件从一个目录移到另一个目录。不允许使用通配符。返回值:0(成功);-1(失败)restorecrtmode()恢复屏幕视频模式为调用initgraph前的设置的函数原形:void far restorecrtmode(void)头文件:graphics.hrmdir()删除目录函数原形:int rmdir(const char *path)注意:删除的目录不能是当前目录,不是根目录,是空目录返回值:0(成功);-1(操作出错)头文件:dir.h_rotl()将一个无符号整形数左循环移位的函数原形:unsigned _rotl(unsigned value,int count)功能:将value向左循环移动count位。返回值:将value向左循环移动count位后的值。头文件:stdlib.h _rotr()将一个无符号整形数右循环移位的函数原形:unsigned _rotr(unsigned value,int count)功能:将value向右循环移动count位。返回值:将value向右循环移动count位后的值。头文件:stdlib.hscanf()格式化输入函数使用格式:scanf(输入格式,输入项系列) scanf(%f,&实型变量) scanf(%c,&字符变量) scanf(%s,字符串变量) scanf(%d,&整型变量)注:需先定义以上各种变量如 char *字符串变量;searchpath()按dos路径查找一个文件的函数原形:char *searchpath(const char *file)用法:p=searchpath(文件名); 先定义char *p;功能:搜索dos路径(环境变量中的path=.)来定位由file给出的文件。返回值:指向完整路径名字符串的指针。定位失败返回NULL。头文件:dir.hsegread()读段寄存器函数原形:void segread(struct SREGS *segp)作用:把当前寄存器的值保存到SREGS型机构变量segp中。segs.cs=代码段寄存器的值;segs.ds=数据段寄存器的值;segs.es=附加段寄存器的值;segs.ss=堆栈段寄存器的值;setactivepage()设置图形输出活动页的函数原形:void far setactivepage(int page)功能:使page成为当前活动的图形页,其后所有的图形输出操作都在page图形页进行。活动图形页可以不是在屏幕上看到的页。头文件:graphics.hsetcolor()设置当前要画的线颜色的函数原形:void far setcolor(int color)头文件:graphics.h注意:颜色值(EGA/VGA)0-BLACK;1-BLUE; 2-GREEN;3-CYAN; 4-RED;5-MAGENTA;6-BROWN;7-LIGHTGRAY;8-DARKGRAY;9-LIGHTBLUE;10-LIGHTGREEN;11-LIGHTCYAN;12-LIGHTRED;13-LIGHTMAGENTA;14-YELLOW;15-WHITEsetdisk()设置当前驱动器的函数原形:int setdisk(int drive)功能:把由drive指定的驱动器修改成当前驱动器,返回可使用的驱动器数。头文件:dir.hsetgraphmode()将系统设置成图形模式并清屏的函数原形:void far setgraphmode(int mode)功能:选择一个不同于调用initgraph()函数时所设置的缺省的图形模式。返回值:如果给了一个对当前驱动程序来说无效的模式,则返回-10。头文件:graphics.hsetlinestyle()设置当前画线宽度和类型的函数原形:void far setlinestyle(int linestyle,unsigned upattern,int thickness)其中:linestyle=0为实线;1为点线;2为中心线;3为破折线;4为用户定义。thickness=1为一个像素宽;3为三个像素宽。只有当linestyle=4时,upattern才起作用。头文件:graphics.hsettextstyle()显示字符的当前设置函数功能:设置当前输出英文字符的字体、大小和方向。调用方式:void far settextstyle(int font,int direction,int charsize)其中参数font确定所选定的字体形状,DEFAULT_FONT 或0 是88位图字体TRIPLEX_FONT 或1 是三重矢量字体SMALL_FONT 或2 是小号矢量字体SANS_SERIF_FONT或3 是无衬线矢量字体GOTHIC_FONT 或4 是哥特矢量字体参数durection字符的显示方向,HORIZ_DIR 或0 是水平方向VERT_DIR 或1 是垂直方向参数charsize表示字符放大的倍数,其值为0到10。 setvect()设置中断向量函数setvect(int 中断号,void interrupt(*中断函数名)功能:把中断服务程序的地址装入中断向量表中。调用方法:setvect(中断号,中断函数名即地址);(1)得预先定义要代替原函数的新函数void interrupt 中断函数名(void).(2)得先保留原中断函数地址void interrupt (*保留函数名)(void);保留函数名=getvect(中断号);(3)事后得将原中断函数地址装回向量表中setvect(中断号,保留函数名);setviewport()建立视口的函数原形: void far setviewport(int left,int top,int right,int bottom,int clip)功能:用左上角坐标left,top和右下角坐标right,bottom建立一个视口,如果clip为1,则超出视口的输出自动被剪裁掉;如果clip为0,则不被剪裁。例:setvie
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老资金监管与房产买卖合同风险评估与管理
- 精准工业废气排放处理项目验收合同书
- 生物医药专利许可交易与研发合作综合服务协议
- 跨国货物代理报关及风险评估合同
- 医疗产业投资风险评估与项目可行性分析合同
- 家居产品售后安装与售后维修服务协议
- 宠物用品品牌连锁经营区域保护与供货协议
- 商业综合体物业租赁及运营管理股权合作协议
- 企业内训课程定制与讲师派遣服务合同
- 美发店管理与经营实战策略
- 芯片定制合同范本
- 2025年生猪屠宰兽医卫生检疫人员考试题(附答案)
- 2025届云南省楚雄市重点名校初三一模物理试题(海淀一模)试卷含解析
- 记叙文阅读理解解析(课件)-部编版语文五年级下册阅读理解
- 2025年行政执法证资格考试必刷经典题库及答案(共130题)
- 装修陪跑合同协议书8篇
- 七下18《井岗翠竹》公开课一等奖创新教案
- 气管套管滑脱的处理流程
- 基于数字孪生的SW水库数字化平台建设研究
- 2025年上海市劳务合同参考模板(2篇)
- 人教版初中语文八年级下册第三单元写作指导课件
评论
0/150
提交评论