Turbo C2.0语法及库函数功能速查表2(编程手册)

getdfree(dos.h)返回drive指定的驱动器返回dfptr指向的结构中剩余的磁盘空间量。1代表A驱动器,
2代表B驱动器等等,调用getdfree时也可以用0来代表对驱动器的k缺省值,结构dfree
定义如下:
struct dfree{
unsigned df_avail; /*未用的空间*/
unsigned df_total; /*全部空间*/
unsigned df_bsec; /*每扇区的byte数*/
unsigned df_sclus; /*扇区每簇的数*/
}
格式:void getdfree(int drive,struct dfree *dfptr)
getdta(dos.h)-返回一个指向磁盘传送地址(DTA)的指针。返回的是远程指针。
格式:char far *getdta(void)
getfat/getfatd(dos.h)-返回有关drive内磁盘的各种信息,这些信息是从该驱动器的文件分配表fat中
收集到的。如果drive的值=0,则使用缺省驱动器;否则,1=A;2=B;3=C;
fptr指向的结构用来装入从FAT中取出的信息
struct fatinfo{
char fi_sclus; /*扇区每簇数*/
char fi_fatid; /*FAT ID*/
int fi_nclus; /*合计数(以簇为单位)*/
int fi_bysec; /*每扇区的byte数*/
}
void getfat(int drive,struct fatinfo *fptr)
void getfattd(struct fatinfo *fptr)
getpsp(dos.h)-返回程序段前缀(PSP)的段地址。格式:unsigned getpsp(void)
getvect(dos.h)-8086系列每个处理器都包含1组从0~255号的中断向量。每个向量的4个字节字值实际上是中断
处理函数的入口地址。getvect读如由参数intr_num给定的中断向量值,并将该值作为中断
函数的远地址
void interrupt(* getvect(int intr_num))()
getverify(dos.h)-返回dos的确认标志状态,若该标志打开,所有的写操作将于输出缓冲区之间有确认过程,
以保证操作的正确性。若关闭它,就不进行这个确认操作
确认标志关闭时,函数返回0,否则返回1
int getverify(void)
harderr/hardresume/hardretn(dos.h)-harderr允许用自己的错误处理程序代替dos默认的硬件错误处理程序
   该函数调用时使用新的出错处理程序的函数地址。每次0x24中断出现
   时将执行该函数。假定该出错处理函数的名字是err_handler(),
   它必须具有下述原型:
   err_handler(int errnum,int ax,int bp,int si)
   这里errnum是dos的出错代码,ax,bp和si存放AX,BP和SI寄存器的值
   如果AX是负值,就出现了磁盘错误。这种情况下,ax和0xFF AND(与)
   操作的结构就是时效驱动器的代号,A驱动器为1,如果AX是负值,则表明
   设备出错。BP和SI寄存器装有从出错装置的得到该装置驱动器地址。
在生成自己的出错程序时,必须遵守下述两条重要规则:
   1.中断处理程序必须不使用任何一个库函数
   2.只能使用DOS的调用号1到12。
出错中断处理程序可以以一种或两种方式退出:
   1.用handresume()函数来退出并返回dos,该函数返回code的值
   2.可以通过调用hardretn()来返回程序,并返回code的值。
在这两种情况下,返回的值必须是0代表ignore,1代表retry,2代表abort.
    格式:void harderr(int (* int_haandler())
  void hardresume(int code)
  void hardretn(code)
inport/inportb(dos.h)-inport函数返回从port指定的接口读入的字的值,inportb()宏返回从指定读入
的一个字节。int inport(int port)
    int inportb(int port)
intdos/intdosx(dos.h)-用于访问in_regs指向的联合中的内容所指定的dos系统调用。他执行1次int 21h
      指令,并把结果放入out_regs指向的联合中。intdos()返回ax寄存器中供dos返回
      信息用的值,返回时,如果进位标志被设置,就说明出现错误。
      intdos()函数去访问的那些系统调用,这些调用需要除dx或al之外的寄存器内的参数
      ,或返回除ax外的某一积存数的信息。联合REGS联合在DOS.H头部文件中
      intdosx函数的segregs指定ds和es寄存器。这主要是在大型数据存储模式下编译的
      程序中使用:int intdos(union REGS *in_regs,union REGS *out_regs)
    int intdosx(union REGS *in_regs,union REGS *out_regs,struct SREGS *segregs)
int86/int86x(dos.h)用来执行由int_num指定的软件中断。首先把联合in_regs中的内容拷贝到处理器的寄存器
   中,随即产生对应的中断。
   返回时,联合out_regs将保存cpu返回后在寄存器中的值。如果进位标志被设置,就表明
   发生了错误,ax寄存器被返回。
   int86x函数把segregs->ds的值拷贝到ds寄存器中,把segregs->es的值拷贝到es寄存器
   中。这样就允许在以大型数据模式编译程序时,指定的中断期间使用段地址。
   联合REGS和结构SREGS在头文件DOS.H中定义。
   int int86(int int_num,union REGS *in_regs,union REGS *out_regs)
   int int86x(int int_num,union REGS *in_regs,union REGS *out_regs,struct SREGS *segregs)
interrupt(dos.h)-返回与intr中所指定的中断相联结的中断服务程序的地址,返回值是一个远程指针。
格式:void interrupt(*getvect(int intr))(void)
intr(dos.h)-执行由intr_num制定的软件中断.他只是int86的一个替代函数
结构REGPACK的定一如下:
struct REGPACK{
unsigned r_ax,r_bx,r_cx,r_dx;
unsigned r_bp,r_si,r_di,r_ds,r_es;
unsigned r_flags;}
格式:void (int intr_num,struct REGPACK *reg)
keep(dos.h)-执行0x31中断,他使程序终止运行但仍驻留在内存中.status的值作为返回代码被返回dos.将要
驻留的程序大小由size指定,格式:void keep(int status,int size)
MK_FP(dos.h)-返回一个以seg指定段,以off指定的偏移量的远程指针
void far *MK_FP(unisgned seg,unsigned off)
outp(dos.h)-将整数byte_value输出到指定端口portid,格式:outport(port,value)
outport/outportb(dos.h)-向port指定的接口输出word的值;宏outportb向指定的接口输出指定字节
void outport(int port,int word)
void outportb(int port,char byte)
parsfnm(dos.h)-把存放在一个字符串中的文件名转换为文件控制块(fcb)所需的形式,并把他放入fcbptr指向
的结构.这一函数经常用于转换命令行参数.该函数使用dos函数0x29. option参数用来
在调用dos命令之前设置al寄存器的值.
fcb结构定义如下
struct fcb{
char fcb_drive; /*0=默认驱动器,1=A;2=B*/
char fcb_name[8]; /*文件名*/
char fcb_ext[3]; /*文件扩展名*/
short fcb_curblk; /*Current block number*/
short fcb_recsize; /* logical record size in bytes*/
long fcb_filsize; /*文件大小(byte数)
short fcb_date; /*文件最后的修改日期*/
char fcb_rev[10]; /*保留为dos*/
char fcb_currec; /*current record in block*/
char fcb_random; /*random record number*/
}
当parsfnm调用成功后,返回一个指向文件名之后下一个字节的指针;出错返回0;
格式: char *parsfnm(char *fname,struct fcb *fcbptr,int option)
peek/peekb/poke/pokeb(dos.h)-peek返回一个seg:offset所指向的内存单元的16位值
     peekb返回一个set:offset所指向的内存单元的8位值
     poke把word的16位值放到seg:offset指定的地址处
     pokeb把byte的8位值放到seg:offset指定的地址处
格式:int peek(int seg,unsigned offset)
     char peekb(int seg,unsigned offset)
     void poke(int seg,unsigned offset,int word)
     void pokeb(int seg,unsigned ofset,char byte)
randbrd/randbwr(dos.h)-读取count个纪录并放入当前磁盘传送地址处的存储区.实际读取的纪录由
fcbptr指向的结构值来确定
fcb结构定义:
struct fcb{
char fcb_drive; /*0=默认驱动器,1=A,2=B*/
char fcb_name[8]; /*文件名*/
char fcb_ext[3]; /*文件扩展名*/
short fcb_curblk; /*current block numder*/
short fcb_recsize; /*logical record size in bytes*/
long fcb_filsize; /*文件的byte数*/
short fcb_date; /*文件的最后修改日期*/
char fcb_resv[10]; /*dos保留*/
char fcb_currec; /*current record in block*/
long fcb_random; /*random record number*/
}
randbrd()使用0x27中断,函数randbwr()向由fcbp指向的结构相联结的文件中写
入count个纪录,randbwr()函数使用dos的0x28中断
返回值:
   1.成功的传送了全部纪录
   2.遇到了EOF,但此前的纪录完整
   3.纪录太多
   4.遇到了EOF,此前的纪录不完整
格式:int randbrd(struct fcb * fcbptr,int count)
     int randbwr(struct fcb * fcbptr,int count)
segread(dos.h)-把段寄存器得当前值拷贝到sregs指向的结构SREGS中.这个函数供intdosx和int86x函数只用
格式:void segread(struct SREGS * sregs)
setcbrk(dos.h)设置control+break的检测状态为on或off.若cbrkvalue=0,则检测状态置为off,这时只有在
控制台,打印机或通信设备进行I/O时检测CTRL+BREAK;若cbrkvalue=1,则检测状态置为on,
在每次系统调用时都检测Ctrl+break,setcbrk返回cbrkvalue的值,
int setcbrk(int cbrkvalue)
setdta(dos.h)-把磁盘传送地址(DTA)设置为dta指定的值,格式: void setdta(char far *dta)
setvect(dos.h)-把isr指向的中断服务程序的地址存入intr指定位置的中断向量表
格式:void setvect(int intr,void interrupt)(*isr)())
setverify(dos.h)设置dos确认标志的状态,打开,所有的磁盘写操作与输出缓冲区之间的确认过程,以保证
写操作的正确性.关闭,就不进行这1确认操作,要打开确认标志,调用setverify时value
的值设为1,设为0则关闭他.格式:void setverify(int value)
sleep(dos.h)-使程序暂停运行time秒时间,void sleep(unsigned time)

动态地址分配
allocmem(dos.h)利用dos的0x48中断,以分配按节排列的内存块.他把内存块的段地址放进由seg所指的无符号
整型数.参数size指定被分配的字节数(一个节paragraph等于16字节).如果所请求的内存
能够被分配,函数就返回-1.如果没有足够的内存,指向seg的无符号整形量将不会被赋值,
并且返回最大可用的块大小,格式:int allocmem(unsigned size,unsigned *seg)
brk(alloc.h)-动态改变数据段所用内存的数量.这种改变是通过重置程序的截断值来完成的,截断值为
数据段结尾以上的第一个位置的地址.分配的内存空间随截断值增加而增加,如果成功
,数据段的结尾是eds,并且返回零;否则返回-1,并且errno置为ENOMEM(内存不够)
例:*PTR=malloc(100);  brk(PTR+1000);
格式:int brk(void *eds)
calloc(stdlib.h,alloc.h)-返回一个指向被分配的内存指针.该分配的内存数量等于num *size,其中size是以
 字节表示,即calloc()为具有num个长度为size的数据的数组分配内存.
 函数calloc返回一个指向被分配区域中第一个字节的指针.如果没有足够的内存
以满足要求,就返回一个空指针.所以需要检查返回值是否为空.检查方法
如:if(p); /*p=(float *)calloc(100,sizeof(float));*/
格式:void *calloc(unsigned num,unsigned size)
coreleft(alloc.h)-得到在堆栈(heap)上剩余的未曾使用的内存字节数,对于采用小内存模式编译的程序,
  函数将返回无符号的整形量.对于采用大型数据模式编译的程序,函数返回一个无符号
  长整数型值.格式: unsigned (long) coreleft(void);
farcalloc(alloc.h)-除了是在当前数据段外用远堆分配内存外,他与calloc()函数相同
   void far * farcalloc(unsigned long num,unsigned long size)
farcoreleft(alloc.h)-得到远堆中剩余的自由内存字节数,并将该数返回
    格式:unsigned long farcoreleft(void)
farfree(alloc.h)-用来从远堆中释放由调用farmalloc或farcalloc而被分配的内存.在调用farfree时
 必须十分谨慎,只能用一个有效的指针进入远堆;否则将会是远堆出错,不能用free函数
 释放一个远堆指针,也不能使用farfree释放一个常规堆指针,格式:
 void farfree(void far *ptr)
farmalloc(alloc.h)-返回在远堆中字节长为size的内存区域的第一个字节的指针,除了使用远堆(而不是
   在默认的数据段的堆中)以外,与malloc的函数是等价的
   far * farmalloc(unsigned long size)
farrealloc(alloc.h)-重新确定以前从远堆分配的内存块的大小,ptr为指向内存块的指针,newsize为新确定
    的大小.该函数的功能除了他是操作与远堆上(而不是在默认的数据的堆中)以外,
    与relloc()函数是等价的,格式:void far *farrealloc(void far * ptr,unsigned long newsize)
free(stdlib.h)-释放由ptr所指定的,并把他返回给堆,以便这些内存成为在分配时的可用内存.
free()只能用于以前由动态地址分配函数,例如malloc,calloc的所分配地址的那个指针来
调用,void free(void *ptr)
freemem(dos.h)-释放内存块,块的第一字节(第一字节为其段地址)在seg中.该内存块必须是由allocmem()分配
的,如果成功返回0,失败返回-1.格式:int freemem(unsigned seg)
malloc(stdlib.h,alloc.h)得到指向大小为size的内存区域的首字节的指针,该内存是从堆栈中已被分配的.
使用之前应检测返回值不为空指针,格式:void * malloc(unsigned size)
realloc(stdlib.h,alloc.h)把由ptr所指向的已分配内存的大小变成由newsize所指定的新的大小,newsize的值
 可以小于或大于原先的值,使用时必须验证.
  void realloc(void *ptr,unsigned newsize)
sbrk(alloc.h)-函数sbrk()增加(如果用负值则为减少)amount字节数给已分配的内存数据段,请参看brk函数的
例子 格式:void * sbrk(int amount)
setblock(dos.h)-改变段地址为seg的内存块的大小,size是用节(16字节)表示的.内存必须是以前用allocmem
分配过的,成功返回-1,如果不能调整,返回分配的最大值
int setblock(unsigned seg,unsigned size)
目录函数
chdir(dir.h)-把由路径名path所指的目录变成当前工作目录,该路径名可以包括驱动标识符,目录必须是以存在
的,如果成功,返回0;不成功返回-1,并把errno置为ENOENT(非法目录名)
格式:int chdir(char *path)
findfirst/findnext(dir.h,dos.h)-函数findfirst寻找与fname所指向的文件名相匹配的第1个文件名.文件名
中可能包括驱动器标识符及路径名,也允许包括通配符*或?,如果找到了
相匹配的文件,则将有关该文件的信息添入由ptr所指向的结构中,同时
DTA置为ffblk结构的地址
ffblk结构定义如下:
struct ffblk{
char ff_reserved[2]; /*dos使用*/
char ff_attrib; /*文件属性*/
int ff_ftime;/*创建时间*/
int ff_fdate;/*创建日期*/
int ff_fsize;/*文件大小(byte)*/
char ff_name[13];/*文件名*/
参数attrib决定了由findfirst函数要找的文件类型.若attrib为0,则与所
要找的文件名相匹配的文件都是可接受的,无路该文件属性如何.若进行进
一步搜索,则attrib可以是下面的值
0x07或0x06 所有的属性
0x16 所有的目录和文件
0x00 所有文件
0x01 只读文件
0x02 隐含文件
0x04 系统文件
0x08 磁盘卷标号
0x10 子目录
0x20 档案
findnext将继续由findfirst开始的搜索
findfirst和findnext若成功返回零,失败反回-1.失败errno则置为ENOENT(文件
没找到),或ENMFILE(目录中没有更多的文件)
格式:int findfirst(char *fname,struct ffblk *ptr,int attrib)
     int findnext(struct ffblk *ftr)
例:a=findfirst("*.c",&file,0);
   while(!a){
printf("%s\t%ld\n",file.ff_name,file.ff_fsize);
a=findnext(&file);}
fnmerge/fnsplit(dir.h,dos.h)--fnmerge通过所指定的各分量,构造一个文件名,并且把该名字存到由path所指的
字符串中.例如,如果驱动器(drive)是c:,目录(dir)是\tc\,文件名(fname)是test,
并且扩展名(ext)是.c,则产生的文件名c:\tc\test.c
函数fnsplit把path所指的文件名分解成其个分量部分.
每个参数所需的数组的大小,如下:
________________________________________________________________________________________________
参数 | 大小   | 宏名
________________________________________________________________________________________________
path | 80   | MAXPATH
drive | 3   | MAXDRIVE
dir | 66   | MAXDIR
fname | 9   | MAXFILE
ext | 5   | MAXEXT
______________________________________________________________________________________________ 

函数fnsplit在由drive所指定的驱动器后面加上:,在所指定的扩展名前面放上
句点,所以要留出前后得空位置,这两个函数是互补的,其中一个的输出能作为另一个
输入,函数fnsplit返回由5个标志为(flags)组成的整形量,这些标志位有下面的一些
宏定义名于之相关联(定义dir.h)
_______________________________________
|宏名 | 含义       |
_______________________________________
|EXTENSION |扩展名              |
|FILENAME |文件名              |
|DIRECTORY |目录路径名       |
|DRIVE |指定的驱动器       |
|WILDCARD |通配符(* OR ?)
|____________________________________
为了确定标志位是否被设置,将标志宏(flag macro)与返回值进行AND操作,并检验
结果,如果结果为1,就是该标志为设置了,否则没有被设置
格式:void fnmerge(char *path,char *drive,char *dir,char *fname,char *.ext)
     int fnsplit(char *path,char *dirve,char *dir,char *fname,char *ext)
getcurdir(dir.h)-把由dirve所指定的当前工作目录拷贝到由dir所指定的字符串中,若drive为零值,则指的
 是却省驱动器,驱动器a用1,驱动器b为2,以此类推,由dir所指定的字符串长度必须至少
 为MAXDIR个字节,MAXDIR为DIR.H中定义的宏.目录名不包括驱动器标识符,也不以反斜杠开始
 如果成功,返回0,否则-1
 格式:int getcurdir(int drive,char *dir)
getcwd(dir.h)-把当前工作目录的全路径名(最多len个字符长)拷贝到由dir所指向的字符串中.如果全路径名
      比len字符长,则出错,该函数返回指向dir的指针,若getcwd调用的dir的值为空,则函数自动用
      mallco分配内存并返回一个指定该内存的指针,可以用free()释放由getcwd分配的内存
      格式:char *getcwd(char *dir,int len)
getdisk(dir.h)-返回当前驱动器名的代码,驱动器a为0,驱动器b为1,以此类推
int getdisk(void)
mkdir(dir.h)-mkdir用由path所指向的路径名建立一个目录,如果函数成功,则返回0,否则-1,并把errno置
为EACCES(不接受访问)或ENOENT(非法目录名),格式:int rmdir(char *path)
searchpath(dir.h)-searchpath()试图用dos path环境变量找出由fname所指向的文件名.如果找到文件,返回
  指向全路径名的指针.该字符串是静态分配地址的,每次调用该函数他都重写一次,若没找到
  返回空指针,格式: char *searchpath(char *filename)
setdisk(dir.h)-把当前驱动器设置为由drive所指定的驱动器,驱动器a为0,b为1,c为2,该函数返回驱动器总数
int setdisk(int drive)
unlink(dos.h,unix)-从目录中抹去指定文件.成功返回0,失败返回-1,并把errno设置为下述值
ENOENT-使用了无效的路径名或文件名
EACCES-拒绝访问
   格式:int unlink(char * fname)
过程控制函数:
about(process.h,stdlib.h)-使程序立即终止运行,文件没有被清除.该函数将数值3返回到调用过程(通常是
  操作系统).   void about()
atexit(stdlib.h)-使得由func所指向的函数作为程序正常终止的调用函数,即指定在程序结束运行时被调用,
 被调用的函数是atexit_t型,该函数在stdlib.h中的typedef中已定义.
 函数atexit如果指定的终止函数被登记,则返回0,否则返回非零.最多只能建立32个终止函数
 他们是以其建立时的相反顺序被调用的,即先进后出.格式:int atexit(atexit_t func)
 例: void lzp();
     main(){if(atexit(lzp)){...};}
execl/execle/execlp/execlpe/execv/execve/execvp/execvpe(process.h)-exec函数族用于执行另一个程序
文件名由fname所指向的.被调用程序的参数用arg0到argN所指定,或者用arg[]指定,环境
字符串必须由envp指定(子过程中该参数是由argv所指定的),如果fname所指定的字符串没有
扩展名或句点,首先搜索由fname所指定的文件名.如果不成功,文件加上扩展名.exe在此搜索
执行子过程的确切方式取决于你是用那种exec,后缀中有p的函数,是在由dos path命令指定
的目录中搜索子过程.若后缀没有p,只在当前和根目录中搜索.
后缀中的l指定子过程参数将作为独立的参数传递.当你预先知道所传递的参数个数时,才使
用该方法.请注意:最后的一个参数务必是NULL(NULL定义在stdio.h),后缀中有v的意味着
子过程的参数传递以数组形式.当预先知道有多少个参数要被传递时,才使用此方法,在后缀
中有e的表明一个或多个环境字符串被传递到子过程,envp[]参数是一个字符串的指针数组,
每个有数组所指向的字符串必须有以下形式: 环境变量=值
数组的最后一个指针必须是null,如果数组的第一个元素是null,如果数组第一个元素是
null,子过程继承与父过程一样的环境,注:进行exec调用时,已打开的文件在子过程仍保持
打开状态.成功不返回值,否则-1,
errno(出错寄存器的状态)
E2BIG 参数太多
EACCES 拒绝访问子过程文件
EMFILE 打开的文件太多
ENOENT 文件未找到
ENOEXEC EXEC格式错误
ENOMEM 没有足够的内存
格式:int execl(char *fname,char *arg0,...,char *argN,NULL)
     int execle(char *fname,char *arg0,...,char *argN,NULL,char *envp[])
     int execlp(char *fname,char *arg0,...,char *argN,NULL)
     int execlpe(char *fname,char *arg0,...,char *argN,NULL,char *envp[])
     int execv(char *fname,char *arg[])
     int execve(char *fname,char *arg[],char *envp[])
     int execvp(char *fname,char *arg[])
     int execvpe(char *fname,char *arg[],char *envp[])
exit/_exit(process.h,stdio.h)-exit()使程序立即终止.状态值status被传递到调用过程.exit(0)正常终止
      exit(1),异常终止,exit 清除和关闭所有打开的文件,写出任何缓冲输出,
      调用所有的atexit(登记的程序终止函数),_exit只终止程序没有其他操作,
格式:void exit(int status)
     void _exit(int status)
注:arg0是程序本身的名字
spawnl/spawnle/spawnlp/spawnlpe/spawnv/spawnve/spawnvp/spawnpe(process.h)-用于执行另一个程序
参数模式(mode)的值:
0----把父过程挂起直到子过程执行完毕
1----子过程和父过程同时执行
2----子过程在内存中覆盖掉父过程
其他同exec函数
格式: int spawnl(int mode,char *fname,char *arg0,...,char *argN,NULL)
      int spawnle(int mode,char *fname,char *arg0,...,char *argN,NULL,char *envp[])
      int spawnlp(int mode,char *fname,char *arg0,...,char *argN,NULL)
      int spawnlpe(int mode,char *fname,char *arg0,...,char *argN,NULL,char *envp[])
      int spawnv(int mode,char *fname,char *arg[])
      int spawnve(int mode,char *fname,char *arg[],char *envp[])
      int spawnvp(int mode,char *fname,char *arg[])
      int spawnpe(int mode,char *fname,char *arg[],char *envp[])
例:a=spawnlp(0,"win.com","win.com","/z",NULL)
注:arg0是程序本身的名字
system(process.h,stdlib.h)-用于执行dos的内部命令和外部命令,环境变量COMSPEC用于查找COMMAND.COM文件
   格式:int system(char *command)
va_start/va_end/va_arg(stdarg.h)-函数va_start,va_end,va_arg一起将一个参数变量传递给一个函数.运行参数变量最常见的例子
是printf,
这个过程如下:函数必须有至少一个已知参数,在参数变量表前可以有多个.最右边的已知参数
称为last_parm.在访问任何变长度参数之前,参数指针必须通过调用va_start来初始化,接着,
参数通过调用带有类型type的va_start而被返回,该type是下个参数的类型.最后,一旦所有参数
都读入完毕,在从函数中返回之前,一定要调用va_end()以确保堆栈正确的复位.
格式:void va_start(va_list argptr,last_parm)
        void va_end(va_list argptr)
        void va_arg(va_list argptr,type)
字符屏幕和图形功能函数:
arc(graphics.h)-函数以radius为半径,以x,y为圆心,以start为起始角,end为终止角逆时针方向画一个弧线,角度的单位是弧,弧线的颜色
取决于当前画线的颜色,需要用initfraph(定义显示模式)
void far arc(int x,int y,int start,int end,int radius)
bar/bar3d(graphics.h)-函数bar()画一矩形条,其作上角坐标有left_top定义,其右上角坐标由right-bottom定义.条型由当前填充模式及颜色
填充.(可以用setfillpattern)设置当前填充模式和颜色.bar条形并不画出其轮廓)
    函数bar3d除了产生一个以depth为像素的三维条形以外,其他与bar一样,条型是以当前画线颜色画出其外廓.
这意味着,如果你要画一个由外廓的二维条形,就用bar3d函数并将depth置为0,参数topflag决定是否在图形上
放一个三维的顶,若topflag不为零,则放上一个顶盖,否则屋顶盖(需要用initfraph(定义显示模式))
格式:void far bar(int left,int top,int right,int bottom)
        void far bar3d(int left,int top,int right,int bottom,int depth,int topflag)
circle(graphics.h)-以x,y为圆心,以radius(用像素表示)为半径,用当前画线颜色来画一个园,需要用initfraph(定义显示模式)
 格式:void far circle(int x,int y,int radius)
cleardevice/clearviewport(graphics.h)----cleardevice清除屏幕,并把当前光标位置(cp)重新设置为0,0.该函数仅用于图形模式
     clearviewport清除当前视口,比把当前光标位置(cp)重置为0,0.该函数执行之后,视口
将不符存在.需要用initfraph(定义显示模式)
格式:void far cleardevice(void)
        void far clearviewport(void)
closegraph(graphics.h)-该函数使图形状态失败,并且释放用于保存图形驱动器的字体的系统内存.当你的程序即用到图形输出又用到
非图形输出时,应使用此函数.该函数还把屏幕模式返回到调用initgraph前的状态,如果在程序结束时,也可以
用restorecrtmode()代替该函数.在这种状态下,任何分配的内存都将自动释放.需要用initfraph(定义显示
模式),格式:void far closegraph()
clreol/clrscr(conio.h)-----clreol清除当前字符窗口中,从当前光标位置到该行结束的所有字符,光标位置保持不变.函数clrscr清除
当前字符窗口,并且把光标定位在左上角(1,1)
格式:void clreol(void);
        void clrscr(void);
cprintf(conio.h)--函数将格式化的数据直接输出到屏幕当前文本窗口中,他并不将\n转换成回车符\r\n,函数cprintf返回输出的字符
    的个数.格式:int cprintf(char *format[,argument,...]);
    调用 cprintf在图形屏幕中输出字符时,可以设置directvideo变量来设置模式,当在调用cprintf之前使用directvideo=0;
    则cprintf使用中断输出字符,此时可以输出汉字,而不设置directvideo则是直接写入显存,
cputs(conio.h)--把由str所指向的字符串输出到当前字符窗口.该函数的输出不能改变方向,并且他会自动防止字符输出到窗口外面.如果
成功.返回最后一个写入的字符;否则返回EOF.格式:int cputs(const char *str)
delline(conio.h)--删除活动窗口内光标所在行,并将以下各行上移1行.注:如果当前窗口小于整个屏幕,则该命令只影响到窗口内的字符
void delline(void)
detectgrph(graphics.h)--确定图形时配器的类型,返回适合于图形适配器的代码,用driver所指向的整形量表示,该函数把mode所指向的
变量设置为是配器所能支持的最高分辨率,如果系统中没有则driver指向的变量为-2
格式 :void far detectgraph(int far *driver,int far *mode)
drawpoly(graphics.h)---用当前画线颜色化一个多边形,多边形的顶点数等于numpoints,由于每点都由坐标x,y构成,所以由points所指向
的整形数组必须至少为点数的2倍.在该数组中,每一点的坐标都定义为x,y,并且x坐标在前.如要画n个顶点
封装的多边形,必须定义n+1个点,其中第0个和第n个点的坐标相同.需要用initfraph(定义显示
模式),格式:void far drawpoly(int numpoints,int far *  points)
ellipse(graphics.h)--用当前画线颜色画一椭圆弧.该椭圆以x,y为中心,x轴,y轴半径由xradius和yradius指定.所显示的椭圆的实际大小
   由start和end值来决定,start为椭圆起始角,end为椭圆终止角,他们以度表示,如果start等于0,end等于360,则画的
   是一个完整的椭圆.需要用initfraph(定义显示模式),
   格式:void far ellipse(int x,int y,int start,int end,int xradius,int yradius)
fillellipse(graphics.h)---以(x,y)为中心,xradius,yradius为水平和垂直轴画一填充园.椭圆用当前填充颜色和填充格式填充,用当前颜色
画椭圆边线.需要用initfraph(定义显示模式)
void far fillellipse(int x,int y,int xradius,int yradius)
fillpoly(graphics.h)---首先用当前画线颜色,画一个由ponits指向的数组中定义的numpoints个x,y坐标点所构成的形状(参见drawpoly
所描述的多边形的构成).然后再用当前填充模式和颜色对该形状进行填充,填充模式可以调用setfillpattem来设置
需要用initfraph(定义显示模式),
void far fillpoly(int  numpoints,int far *points)
floodfill(graphics.h)---用图形块中任意给定点和形状边界线的当前填充颜色和模式,来填充该图形块(构成图形块的线或弧的颜色).必须
    保证要填充的区域是完全封闭的.如果不是这样,该形状外边的区域也将被填充.可以用setfillstyle来设置图形块
    被填充的方式,需要用initfraph(定义显示模式),格式:void far floofill(int x,int y,int border)
getarccoords(graphics.h)---该函数将有关上次调用arc()(画弧线函数)函数的信息存入到coords结构中.arccoordstype结构如下定义:
 struct arccoordstype{
int x,y;
int xstart,ystart,xend,yend;};
x,y是函数的中心点.起始点和结束点的坐标值x,y存储在xstart,ystart和xend,yend中,需要用initfraph(定义显示模式),
格式:void far getarccoords(struct arccoordstype far *coords)
getaspectratio(graphics.h)--把x纵横比拷到由xasp所指定的变量中去,把y纵横比拷到由yasp所指向的变量中.可以利用这些纵横比
  来改变图形屏幕上所显示的纵横比例,需要用initfraph(定义显示模式),
  void far getaspectratio(int far *xasp,far *yasp)
getbkcolor(graphics.h)---返回当前的前景色,值和他们对应的宏(定义在graphics.h中),需要用initfraph(定义显示模式),如下:
black 0
blue 1
green 2
cyan(青) 3
red 4
magenta(洋红) 5
brown(棕) 6
lightgray(淡灰) 7
darkgray(深灰) 8
lightblue(浅蓝) 9
lightgreen(淡绿) 10
lightcyan(淡青) 11
lightred(淡红) 12
lightmagenta(淡洋红) 13
yellow 14
white 15
格式:int far getbkcolor(void)
getcolor(graphics.h)---返回当前的画线颜色,需要用initfraph(定义显示模式),格式:int far getcolor(void)
getdefaultpalette(返回一个指针,该指针指向调用initgraph初始化程序时当前驱动程序的调色板结构,需要用initfraph(定义显示模式),
struct paletletype *far getdefaultpalette(void)
getdrivename(graphics.h)--调用后返回指向当前图形驱动器程序名的字符串,可以用它来测试硬件适配器,需要用initfraph(定义显示模式),
  格式:char *far getdrivename()
getfillpattern(graphics.h)---填写由pattern所指向的数组,填写内容为构成当前填充图案的8个字节,该数组必须至少8个字节长,该图案
 以8位8字节的模式排列(就像windows中的桌面底纹),需要用initfraph(定义显示模式),
 格式:void far getfillpattern(char far *pattern)
getfillsettings(graphics.h)---将当前填充模式和颜色填到由info指向的结构中去,需要用initfraph(定义显示模式),
  fillsettingstype结构的定义如下:
  struct fillsettingstype(
int pattern;
int color;}
pattern值以及其等价宏如下:
EMPTY_FILL 0 用背景色填充
SOLID_FILL 1 实填充
LINE_FILL 2 用线"-"填充
LTSLASH_FILL 3 用斜杠填充(阴影线)
SLASH_FILL 4 用粗斜杠填充(粗阴影线)
BKSLASH_FILL 5 用粗反斜杠填充(粗阴影宪)
LTBKSLASH_FILL 6 用反斜杠填充(阴影宪)
HATCH_FILL 7 网格线填充
XHATCH_FILL 8 斜网格线填充
INTERLEAVE_FILL 9 间隔点填充
WIDE_DOT_FILL 10 稀疏点填充
CLOSE_DOT_FILL 11 密集点填充
USER_FILL 12 用户定义的填充模式(用getfillsettings)
格式:void far gerfillsettings(struct fillsettingstype far *info)
getgraphmode(graphics.h)--返回当前图形模式,返回值不同于bios涉及到的当前屏显模式的真实值,返回值关系到当前视频驱动器
  需要用initfraph(定义显示模式).返回值时下列值之一:
CGAC0 0 320X200
CGAC1 1 320X200
CGAC2 2 320X200
CGAC3 3 320X200
CGAH1 4 640X200
MCGAC0 0 320X200
MCGAC1 1 320X200
MCGAC2 2 320X200
MCGAC3 3 320X200
MCGAMED 4 640X200
MCGAHI 5 640X480
EGALO 0 640X200
EGAHI 1 640X350
EGA64LO 0 640X200
EGA64HI 1 640X350
EGAMONOH1 3 640X350
HERCMONOHI 0 720X348
ATT400C0 0 320X200
ATT400C1 1 320X200
ATT400C2 2 320X200
ATT400C3 3 320X200
ATT400CMED 4 640X200
ATT400CHI 5 640X400
VGALO 0 640X200
VGAMED 1 640X350
VGAHI 2 640X480
PC3270HI 0 720X350
IBM8514LO 0 640X480
IBM8514HI 1 1024X760
格式:int far getgraphmode(void)
getimage(graphics.h)--把屏幕图形部分拷贝到由buf所指向的内存区域,图形的左上角用坐标left,top表示,右下角为right,bottom,用
imagesize()来确定存储图像所需的字节数.用getimage()存储的图像可以用putimage()函数重写到屏幕上
需要用initfraph(定义显示模式),
格式:void far getimage(int left,int top,int right,int bottom,void far *buf)
getlinesettings(graphics.h)---用当前画线模式填写由info所指向的结构,结构linesettingstype所示如下:
   struct linesettingstype{
int linestyle;
unsigned upattern;
int thickness;}
其中linestyle元素存放画线模式,它是以下列举各值之一
SOLID_LINE 实线
DOTTED_LINE 点虚线
CENTER_LINE 中心线
DASHED_LINE 长虚线
USERBIT_LINE 用户定义的画线模式
如果linestyle为USERBIT_LINE,在upattern中的16位模式决定了以什么样的方式画线.模式中的每一位等于1个像素,
如果那个位被设置,则像素打开,否则关闭
宽度元素(thickness)将是下面值的其中之一
MORM_WIDTH 1像素宽
THICK_WIDTH 3像素宽
需要用initfraph(定义显示模式),格式:void far getlinesettings(struct linesettingstype far *info)
getmaxcolor(graphics.h)---返回当前屏幕模式下最大有效颜色值.如:在四色cga模式下,其数值是3,需要用initfraph(定义显示模式),
格式:int far getmaxcolor(void)
getmaxmode(graphics.h)--返回驱动程序的模式最大值,驱动程序可支持0-getmaxmode()返回之中的任一值.
需要用initfraph(定义显示模式),int far getmaxmode(void)
getmaxx/getmaxy(graphics.h)---返回x和y轴图形模式下最大有效的坐标,需要用initfraph(定义显示模式),
int far getmaxx(void)
int far getmaxy(void)
getmodename(graphics.h)--返回指定模式的名字,其中mode_name为模式号,需要用initfraph(定义显示模式),
   char *far getmodename(int mode_number)
getmoderange(graphics.h)---确定driver所指定的图形驱动器能支持的最低和最高模式,并且把这些值分别放由lowmode和himode所指向
   的变量中,driver的有效值及其宏所示如下:
CGA 1
MCGA 2
EGA 3
EGA64 4
EGAMONO 5
RESERVED 6
HERCMONO 7
ATT400 8
VGA 9
PC3270 10
需要用initfraph(定义显示模式),
格式:void far getmoderange(int driver,int far *lowmode,int far *himode)
getpalette(graphics.h)--将当前调色板的值装入由pal所指向的结构中去,palettetype结构定义如下:
 #define MAXCOLORS 15
  struct palettetype{
unsigned char size;
signed char colors[MAXCOLORS+1];
};
其中size元素存放当前调色板的可用颜色数,需要用initfraph(定义显示模式),
可用颜色及其宏名如下所示:
black 0
blue 1
green 2
cyan(青) 3
red 4
magenta(洋红) 5
brown(棕) 6
lightgray(淡灰) 7
darkgray(深灰) 8
lightblue(浅蓝) 9
lightgreen(淡绿) 10
lightcyan(淡青) 11
lightred(淡红) 12
lightmagenta(淡洋红) 13
yellow 14
white 15
EGA和VGA模式:
EGA_BLACK 0
EGA_BLUE 1
EGA_GREEN 2
EGA_CYAN 3
EGA_RED 4
EGA_MAGENTA 5
EGA_BROWN 20
EGA_LIGHTGRAY 7
EGA_DARKGRAY 56
EGA_LIGHTBLUE 57
EGA_LIGHTGREEN 58
EGA_LIGHTCYAN 59
EGA_LIGHTRED 60
EGA_LIGHTMAGENTA 61
EGA_YELLOW 62
EGA_WHITE 63
格式:void far getpalette(struct palettetype far *pal)
getpalettesize(graphics.h)---返回当前图形驱动器模式允许的调色板入口树目.需要用initfraph(定义显示模式),
   格式:int far getpalettesize(void)
getpixel(graphics.h)---返回指定像素点x,y位置上的像素颜色,可用该函数存取屏幕某一点的颜色值,需要用initfraph(定义显示模式),
    格式:int far getpixel(int x,int y)
gettextinfo(conio.h)---将当前文本模式的视频信息添入由r所指向的text_info的结构中
struct text_info{
unsigned char winleft,wintop; /*所定意的窗口的左上角的坐标*/
unsigned char winright,winbottom;/*所定义的窗口右下角的坐标*/
unsigned char attribute,normattr; /*设置的文本属性和正常的文本属性*/
unsigned char currmode; /*当前的字符屏幕的屏幕模式*/
unsigned char screenheight; /*字符屏幕的高度*/
unsigned char screenwidth; /*字符屏幕的宽度*/
unsigned char curx,cury; /*光标在当前窗口中的坐标*/
}
格式:void gettextinfo(struct text_info *r)
gettext(conio.h)---函数gettext()把左上角坐标为left,topo和右下角坐标right,bottom的矩形上的字符拷贝到由buf所指向的内存中.
 坐标是绝对坐标,不是窗口的相对坐标.
 保存屏幕上的一个区域所需要的内存数量可用公式num_bytes=rows x columns x 2来计算.必须将行数乘以
 列数再取其2倍的原因是屏幕上的每个字符要求两个字节的存储单元,一个存放字符本身,另一个字节存放其属性.
 格式:int gettext(int left,int top,int right,int bottom,void *buf)
gettextsettings(graphics.h)---把有关当前图形文字的设置信息放到由info所指向的结构中去,textsettingstype结构定义如下:
   struct textsettingstype{
int font; /*文字类型 font type*/
int direction; /*文字方向水平还是垂直的 horizontal or vertical*/
int charsize; /*文字大小  size of characters*/
int horiz; /*horizontal justification*/
int vert; /*vertical justification*/};
其中font元素为以下各值之一
0 8x8点阵字型(default)
1 3倍笔划字型
2 小号笔划字型
3 无衬线笔划字型
4 黑体笔划字型
元素方向(direction)必须设置为水平文字HORIZ_DIR(default)或垂直文字VERT_DIR.元素charsize是一个
确定字符输出大小尺寸的系数.horiz和vert值指明文字将如何在当前位置(cp)上排列.他们是下列值
中的一个
LEFT_TEXT 0 CP在左边
CENTER_TEXT 1 CP在中心
RIGHT_TEXT 2 CP在右边
BOTTOM_TEXT 3 CP在底边
TOP_TEXT 4 CP在顶边
需要用initfraph(定义显示模式),
格式:void far gettextsettings(struct textsettingstype far *info)
getviewsettings(graphics.h)---把有关当前视口的信息装入由info所指向的结构中去,viewporttype结构定义如下:
struct viewporttype{
int left,top,right,bottom;
it clip;
};
域left,top,right和bottom中存放视口左上角和右上角的坐标,当clip为0时,不做对超出视口边界输出的剪裁
否则,执行剪裁以防止超出边界.需要用initfraph(定义显示模式),
格式:void far getviewsettings(struct viewporttype far *info)
getx/gety(graphics.h)返回图形屏幕上当前位置(cp)的x,y的值.可以利用这两个函数保存当前位置(cp)的坐标值.
   需要用initfraph(定义显示模式),
   格式:int far getx(void)
  int far gety(void)
gotoxy(conio.h)---把字符屏幕上的光标移动到由x,y所指定的位置上,如果其中有一个坐标值是无效的,则光标不移动.
 void gotoxy(int x,int y)
graphdefaults(graphics.h)---将图形系统恢复为缺省值.准确的说,调用该函数后,整个屏幕变成视口,cp定位为0,0.调色板,画线
   颜色,及背景颜色都被复位;填充颜色,填充模式,字体和对齐方式都返回到他们的原始值.
   需要用initfraph(定义显示模式),格式:void far graphdefaults(void)
grapherrormsg(graphics.h)---返回指向errcode的错误信息的指针.出错代码由调用graphresult()获得.需要用initfraph(定义显示模式),
   格式:char far *frapherrormsg(int errcode)
_graphfreemem/_graphgetmem(graphics.h)--分配内存以满足图形驱动器或其他图形系统的需要.函数_graphfreemem释放内存
这些函数一般不应由你的程序直接调用.需要用initfraph(定义显示模式),
格式:void far _graphfreemem(void far *ptr,unsigned size)
        void far *far _graphgetmem(unsigned size)
graphresult(graphics.h)---函数graphresult()返回指出最近一次图形操作的输出值.该值为下面列举值之一
grOK 0 成功
grNoInitGraph -1 未装图形驱动器
grNotDetected -2 系统中无图形硬件
grFileNotFound -3 未找到驱动文件
grInvalidDriver -4 无效的驱动文件
grNoLoadMem -5 无足够内存
grNoScanMem -6 无足够内存用于扫描(scan fill)
grNoFloodMem -7 无足够内存用于填充颜色(flooafill)
grFontNotFound -8 字体文件未找到(font file)
grNoFontMem -9 无足够内存用于装字体文件
grInvalidMode -10 无效图形格式
grError -11 一般图形错
grlOerror -12 输入输出错
grInvalidFont -13 无效字体文件
grInvalidFontNum -14 无效字体代码(font number)
grInvalidDeviceNum -15 无效装置代码(device number)
需要用initfraph(定义显示模式),
格式:int far graphresult(void)
highvideo(conio.h)--在调用函数highvideo()以后,写到屏幕上的字符用高亮度表示,该函数只适用字符屏幕状态
    格式:void highvideo(void)
imagesize(graphics.h)---返回存储一块屏幕图像所需的内存字节数.该块屏幕的左上角为left,top,并且右下角为right,bottom.该
函数一般于getimage()联用,需要用initfraph(定义显示模式),
格式:unsigned far imagesize(int left,int top,int right,int bottom)
initgraph(graphics.h)---用于初始化图形系统,并装入相应的图形驱动器,该函数把由driver所指向图形驱动器代码装入内存,.如果
图形驱动器未装入,图形函数将不能操作.图型函数所用的显示模式由mode的整形值决定,图形驱动器
的路径是由path所指定的字符串给出,如果没有指定路径,就在当前工作路经上找.
图形驱动器包含在.BGI文件中,你不必担心文件的准确名字,因为你只能用其代码指定驱动器,graphics.h
给出了几个能用于该目的的宏:
宏 等价值
DETECT 0
CGA 1
MCGA 2
EGA 3
EGA64 4
EGAMONO 5
IBM8514 6
HERCMONO 7
ATT400 8
VGA 9
PC3270 10
当用DETECT时,initgraph()自动检验目前系统屏显硬件类型,并且选择最大分辨率的显示模式
模式值mode必须是下列所示图形模式之一,注:由mode所指的值不同于bios实际设置模式的例行程序确定的值,
CGA CGAC0 0 320X200
CGAC1 1 320X200
CGAC2 2 320X200
CGAC3 3 320X200
CGAH1 4 640X200
MCGA MCGAC0 0 320X200
MCGAC1 1 320X200
MCGAC2 2 320X200
MCGAC3 3 320X200
MCGAMED 4 640X200
MCGAHI 5 640X480
EGA EGALO 0 640X200
EGAHI 1 640X350
EGA64 EGA64LO 0 640X200
EGA64HI 1 640X350
EGAMONO EGAMONOH1 3 640X350
HERC HERCMONOHI 0 720X348
ATT400 ATT400C0 0 320X200
ATT400C1 1 320X200
ATT400C2 2 320X200
ATT400C3 3 320X200
ATT400CMED 4 640X200
ATT400CHI 5 640X400
VGA VGALO 0 640X200
VGAMED 1 640X350
VGAHI 2 640X480
PC3270 PC3270HI 0 720X350
IBM8514 IBM8514LO 0 640X480
IBM8514HI 1 1024X760
常用格式:int driver,mode;
  driver=DETECT;
  mode=0;
intitgraph(&driver,&mode,"c:\\tc\\bgi");
  ....
closegraph();
格式:void far initgraph(int far * driver,int far *mode, char far *path)
insline(conio.h)---插入一个空行在当前光标位置上,光标以下的所有行都向下顺移一行,该函数值用于字符屏幕,并且在当前字符窗口
操作.格式:void insline(void)
installuserdriver(graphics.h)---用于安装一个厂商提供的设备驱动程序,name是新设备驱动程序的名字(*.bgi),detect为自动检测初始
   化函数,他没有参数,指向整形指针.
返回驱动程序的安装号,如果出错,调用graphresult()返回以下值:
-3 无该文件
-4 非法驱动程序名
-5 内部驱动器表满
-11 一般错误
例:如厂商提供的驱动程序为lzp.lzp,用法如下:
int a,b;
a=installuserdriver("lzp.lzp",nil)
b=0;
initgraph(&a,&b,"");
另一种方法使用厂商提供的自动检测函数detectSGA()
a=installuserdriver("lzp.lzp",detectSGA());
initgraph(&a,&b,"");
其中initgraph中的mode值由detectSGA()返回
格式:int far installuserdriver(char far *name,int huge(*detect)(void))
installuserfont(graphics.h)--用于安装新的字体文件,name为dos下的新字体文件名(*.chr)该函数返回id号,为使用新字体可调用
settextstyle函数,需要用initfraph(定义显示模式),
格式:int far installuserfont(char far *name)
line/lineto/linerel(graphics.h)---line用当前画线颜色从startx,starty点到endx,endy点画一条线.当前位置不变.
    lineto用当前画线颜色从当前位置(cp)点到x,y画一条线,并把cp定位在x,y.
       linerel画一条相对cp位置在x方向增大deltax,在y方向增大deltay的线.cp将移到新的位置.
需要用initfraph(定义显示模式),
格式:void far line(int startx,int starty,int endx,int endy)
        void far lineto(int x,int y)
        void far linerel(int deltax,int deltay)
lowvideo(conio.h)---调用lowvideo()函数后,字符以低亮度方式被写到屏幕上,只用于字符屏幕
  格式:void lowvideo(void)
moverel(graphics.h)---在图形屏幕上,使用当前位置(cp)在x,y方向移动,移动距离分别为deltax,deltay,需要用initfraph(定义显示模式),
格式:void far moverel(int deltax,int deltay)
movetext(conio.h)---把屏幕上左上角为left,top,右上角为right,bottom的字符屏幕块的内容移动到左上角坐标为newleft,newtop的区域中
   该函数适用于整个屏幕,而不是窗口.如果有坐标超界,则函数返回为0,否则返回1
   int movetext(int left,int top,int right,int bottom,int newleft,int newtop)
moveto(graphics.h)---把当前视口中的当前位置值(cp)移动到指定的x,y位置上.需要用initfraph(定义显示模式),
    void far moveto(int x,int y)
normvideo(conio.h)---调用normvideo之后,写到屏幕上的字符以正常亮度显示.该函数只适用于字符屏幕,
    void normvideo(void)
outtext/outtextxy(graphics.h)---outtext用于当前字体设置(方向,字体,字大小,及对齐方式),在图形屏幕下,在当前位置cp处显示一
 个字符串,如果当前方向是水平的,则cp的移动量为该字符串的长度,在图形模式下,光标是不可见的
 但是在屏幕上光标的位置是存在的,可以用settextstyle()来设置字符的样式
 需用initgraph来设置图形模式
 void far outtext(char  far *str)
 void far outtextxy(int x,int y,char *str)
pieslice(graphics.h)---以x,y点为圆心,以radius为半径,以strat和end为起始角和终止角,以当前的画线颜色画一个扇形,并以当前
填充模式和填充颜色进行填充,start和end为单位为度,需用initgraph来设置图形模式
void far pieslice(int x,int y,int start,int end,int radius)
putimage(graphics.h)---把一个由getimage产生的先前存储在buf中的图像拷贝到启动位置x,y的屏幕上,op的值决定了图像以这种
方式写到屏幕上.有效值如下:
COPY_PUT 0 复制
XOR_PUT 1 于屏幕图像取异或后复制
OR_PUT 2 于屏幕图像取或后复制
AND_PUT 3 与屏幕图像取与后复制
NOT_PUT 4 复制原图像的逆
需用initgraph来设置图形模式,格式:void far putimage(int x, int y,void far *buf, int op)
putpixel(graphics.h)---把color所指的颜色写到x,y处的像素上.需用initgraph来设置图形模式
     格式:void far putpixel(int x,int y,int color)
puttext(conio.h)---把先前由gettext()存储到buf所指向的内存中的字符拷贝到左上角和右下角分别为left,top和right,bottom的区域中
 puttext用屏幕的绝对坐标,而不是窗口的相对值,格式:int puttext(int left,int top, int right,int bottom,void *buf)
recangle(graphics.h)---用当前画线颜色画出坐标left,top及right,bottom所指定的矩形,需用initgraph来设置图形模式
格式:void far rectangle(int left,int top,int right,int bottom)
registerbgidriver/registerbgifont(graphics.h)-告诉图形系统,图形驱动器,字体,或两者也被连接,不必去再找相应的磁盘文件
需用initgraph来设置图形模式
 int registerbgidriver(void (*driver)(void))
  int registerbgifont(void(*font)(void))
restorecrtmode(graphics.h)---恢复屏幕模式为调用initgraph()前的模式,需用initgraph来设置图形模式,void far restorecrtmode
sector(graphics.h)---以x,y为中心,以xradius和yradius为水平轴半径和垂直轴半径,以stangle为起始角,endangle为终止角
   画一扇区轮廓线用当前颜色画,扇区填充的模式和颜色用setfillstyle和setfillpattern定义,当stangle位0
   endangle为360时画一个完整的椭圆,使用的角方向为逆时针方向.需用initgraph来设置图形模式
void far sector(int x,int y,int stangle,int endangle,int xradius, int yradius)
setactivepage(graphics.h)---设置将接受turbo c的图形函数所输出的屏显页,缺省值为turboc的屏显0页,如果用其他号调用
  setactivepage(),则后续图形输出被写到新页,这些页未必马上显示出来,在图形模式下,只有
  EGA和VGA支持多图形页,需用initgraph来设置图形模式,void far setactivepage(int page)
setallpalette(graphics.h)---改变某个EGA/VGA调色板上的所有颜色.palettetype结构所示如下:
 struct palettetype{
unsigned char size;
signed char colors[16];
}
必须把size设置为调色板中的颜色数目,然后把每个颜色指数装入其colors数组的相应元素中
setcolor提供个图形卡的有效颜色,需用initgraph来设置图形模式
void far setallpalette(struct palettetype far *pal)
setaspectratio(graphics.h)---用于改变当前图形屏幕的纵横比,以便使arc或其他类型函数画出的弧是园的,而不是扁的,通常yasp应为
   10000,如果使像素点呈正方形(VGA),xasp应为10000,若使像素点高于宽,xasp应小于1000,可用
   getaspectratio()函数读取当前的纵横比,需用initgraph来设置图形模式,
  void far setaspectratio(int xasp,int yasp);
setbkcolor(graphics.h)---把背景色改为由color所指定的颜色,需用initgraph来设置图形模式,color的有效值为:
black 0
blue 1
green 2
cyan(青) 3
red 4
magenta(洋红) 5
brown(棕) 6
lightgray(淡灰) 7
darkgray(深灰) 8
lightblue(浅蓝) 9
lightgreen(淡绿) 10
lightcyan(淡青) 11
lightred(淡红) 12
lightmagenta(淡洋红) 13
yellow 14
white 15
setcolor(graphics.h)---把当前画线颜色设置为color所指定的颜色,每个图形卡的有效颜色由setpalette()提供,需用initgraph来设置图形模式
void far setcolor(int color)
setfillpattern(graphics.h)---设置填充模式以供如floodfill()这些函数使用.该模式是由pattern所给定的.数组必须至少8个字节长,填充
 图案是8位8字节位的模式排列的.当某位为打开状态则显示由color所指定的颜色,否则就用背景色.
 需用initgraph来设置图形模式,void far setfillpattern(char *pattern,int color)
setfillstyle(graphics.h)---为各种图形设置填充样式和颜色.color的值必须是当前屏幕模式的有效值,pattern值定义如下:
EMPTY_FILL 0 用背景色填充
SOLID_FILL 1 实填充
LINE_FILL 2 用线"-"填充
LTSLASH_FILL 3 用斜杠填充(阴影线)
SLASH_FILL 4 用粗斜杠填充(粗阴影线)
BKSLASH_FILL 5 用粗反斜杠填充(粗阴影宪)
LTBKSLASH_FILL 6 用反斜杠填充(阴影宪)
HATCH_FILL 7 网格线填充
XHATCH_FILL 8 斜网格线填充
INTERLEAVE_FILL 9 间隔点填充
WIDE_DOT_FILL 10 稀疏点填充
CLOSE_DOT_FILL 11 密集点填充
USER_FILL 12 用户定义的填充模式(用getfillsettings)
需用initgraph来设置图形模式,void far seetfillstyle(int pattern,int color)
setgraphbufsize(graphics.h)--用来设置许多图形函数索要用到的内存缓存大小,一般不需要用到该函数,如果要用他,必须在
   调用initgraph()之前调用他
setgraphmode(graphics.h)---把当前图形模式设置为mode 所指定的模式,他必须当前图形驱动器的有效模式,
 需用initgraph来设置图形模式,void far setgraphmode(int mode)
setlinestyle(graphics.h)---确定所有画线图形函数的画线方式,style元素保存着画线的格式,参见linestyle指定值的说明
如果style等于UNSETBIT_LINE,在pattern中的16位模式决定了线的格式,pattern中的每一位等于一个
像素宽,若哪一位被设置,则该像素为打开状态,否则是关闭的
宽度元素(thickness)将是下面值中的一个:
NORM_WIDTH 1个像素宽
THICK_WIDTH 3个像素宽
需用initgraph来设置图形模式,void far setlinestyle (int style,unsigned pattern,int width)
setpalette(graphics.h)----改变由屏幕系统所显示的颜色.初次使用此函数时会有点困难,尤其是他把color值与turboc用来映射
在屏幕上实际所要求得显示的颜色指数联系起来.color值请参见gepalette函数的color值的设置.
CGA模式只有背景色可以改变.背景色指数总是0.对于CGA模式,下面的语句把背景颜色该变成绿色
setpalette(0,GREEN),
EGA可以在总共64种不同颜色中同时显示出16种颜色.可以用setpalette将某种颜色映射在16个不同颜色
指数中的一个上,需用initgraph来设置图形模式,
void far setpalette(int index,int color)
setrgbpallette(graphics.h)---定义IBM-8541图形卡的颜色.colornum是待加载的调色板入口,范围为0-255,red,green,blue定义分量
  颜色.这些值中,只有低字节的6个有效位被装入调色板.需用initgraph来设置图形模式,
   void far setrgbpalette(int colornum,int red, int green,int blue)
settextjustify(graphics.h)---设置与cp有关的字符排列的方式,horiz和vert值确定调用settextjustify时的效果,其值如下所示
  需用initgraph来设置图形模式,
  参数 名字 值 作用
  horiz LEFT_TEXT 0 向左对齐
   CENTER_TEXT  1 向中间对齐
RIGHT_TEXT 2 向右对齐
  vert BOTTOM_TEXT  0 向下对齐
CENTER_TEXT   1 向中间对齐
TOP_TEXT  2 向上对齐
void far settextjustify(int horiz,int vert)
settextstyle(graphics.h)---为图形字符输出函数设置当前字体,同时设置方向和字符大小,参数font确定所用字体的类型,缺
省时由硬件定义为8x8为的点阵字体.font值为下面这些值之一
DEFAULT_FONT 0 8X8点阵
TRIPLEX_FONT 1 3倍笔划
SMALL_FONT 2 小号笔划字体
SANS_SERIF 3 无衬线笔划
GOTHIC_FONT 4 黑体笔划
字符显示的方向(从左到右或者是从上到下)由direction值确定,该值可以为HORIZDIR
(其值为0)或者是VERT_DIR(其值为1)
参数size为增加字符大小的系数,它的值可以是0到10,需要用initgraph初始化图形屏幕
格式:void far settextsytle(int font,int direction,int size)
setuercharsize(graphics.h)---为用户提供了很好的确定矢量字体大小的方法,调用该函数以后,每个
显示在屏幕的字符都一起缺省大小乘以mulx/divx为其字符宽,乘以muly/divy
为其字符高,需要用initgraph初始化屏幕
void far setusrcharsize(int mulx,int divx,int muly,int divy)
setviewport(graphics.h)---用作上角坐标left,top和右下角坐标right,bottom建立一个新的视口.
如果clip为1,则超出视口的输出自动被剪裁掉,以防止输出到屏幕的其他部位,
如果clip位0,则不做剪裁,该函数需要用initgraph初始化图形屏幕
格式:void far setviewport(int left,int top,int right,int bottom,int clip)
setvisualpage(graphics.h)--有些显示模式,在图形显示卡中有足够的存储容量可以同时存储两个或两个
以上的完整屏幕信息.保存显示在屏幕上的信息的ram称为页(page),0页为缺省页
但是,可以用硬件所能支持的任何屏幕页,在他们之间切换,但是一次只能有一个
屏幕页被显示.有时需要在另一页上建立后备工作图像页,他在当时不显示,一旦需要
马上可以切换到这一页.若要出现动画效果,只需简单的切换显示页号,函数
setactivepage()和setvisualpage来支持这种处理方法.
函数setactivepage来确定turboc图形函数输出屏显页.如果你用其他页号为参数
调用setactivepage,则后续图形输出就被写到这个新页上,他不一定是当前显示
的一页,若显示页不是0页,就用setvisualpage(),例如,若要显示屏显页1,就用
setvisualpage(1)
该函数需要用initgraph初始化图形屏幕
格式:void far setvisualpage(int page)
setwritemode(graphics.h)---用于设置画线的输出模式.若模式为COPY_PUT(或0),新画的线将覆盖屏幕上原有
  的图像;若模式为XOR_PUT(或1),新线的像素点与旧线的像素点之间进行"异或
 (XOR)",然后再向屏幕输出.该函数需要用initgraph初始化图形屏幕
void far setwritemode(int mode)
textattr(conio.h)--在字符屏幕上同时设置前景色及背景色.attr的值表示颜色形式编码的信息,所示如下:
7   6   5  4  3  2  1  0
|   |      |  |        |
        |   |______|  |________|
       闪烁 背景颜色   字符颜色
     如果第七位没被设置,则字符闪烁;第6位到第4位确定背景颜色;第3位到第0位设置字符的
  颜色,把背景颜色编制成属性字节的最简单方法是:把你所需的颜色代码乘以16,然后将他
  和与所用的字符颜色进行or操作.例如建立一个绿色背景蓝色字符输出:
  GREEN*16|BLUE.若使字符闪烁,就要把字符颜色,背景颜色与BLINK(128)进行OR操作
  void textattr(int attr)
textbackground(conio.h)---设置字符屏幕的背景颜色.调用该函数只影响到后续操作的背景颜色
black----0
blue ----1
green----2
cyan ----3
red  ----4
magenta--5
brown----6
void textbackground(int color)
textcolor(conio.h)---设置字符屏幕下的字符颜色,他也可以用于指定的闪烁字符,color的取值如下:
BLACK -----------0
BLUE ------------1
GREEN------------2
CYAN ------------3
RED  ------------4
MAGENTA----------5
BROWN------------6
LIGHTGRAY--------7
DARKGRAY---------8
LIGHTBLUE--------9
LIGHTGREEN-------10
LIGHTCYAN--------11
LIGHTRED---------12
LIGHTMAGENTA-----13
YELLOW-----------14
WHITH------------15
BLINK------------128(闪烁)
只影响到执行该函数以后输出的字符,void textcolor(int color)
textheight(graphics.h)---以像素为单位返回由str指向的字符串高度,他是针对当前字符的字体大小的
 该函数需要用initgraph初始化图形屏幕
int far textheight(char far *str)
textmode(conio.h)---用来改变字符屏幕的屏显模式,参数mode必须为下面表中所示值之一,可以用整数值
   也可以用宏:
BW40 0 40列黑白
C40 1 40列彩色
BW80 2 80列黑色
C80 3 80列彩色
MONO 7 80列单色
LASTMODE -1 上次模式
格式:void textmode(int mode)
textwidth(graphics.h)---以像素为单位,返回由str所指的字符串宽度.他是针对当前字符的字体于大小
该函数需要用initgraph初始化图形屏幕
int far textwidth(char far *str)
wherex/wherey(conio.h)--返回当前窗口下标的x和y坐标,可以用这两个函数来保存当前光标的坐标值
int wherex(void)
int wherey(void)
window(conio.h)---用于建立矩形字符窗口,其坐上角和右下角坐标分别由left,top和right,bottom来表示
  如果其中的一个坐标是无效的,则window不起作用.一旦函数调用成功,所有定位坐标
  都是相对于窗口的,而不是屏幕.
void window(int left,int top,int right,int bottom)
其他函数:下面要叙述的许多函数要求嵌入头部文件stdlib.h.该头部定义了两种数值类型:div_t和ldiv_t,
  这些分别是由div()和ldiv()所返回的数值类型.下面的宏被定义:
assert(assert.h)---是一个可扩展的if语句的宏.如果参数test的值为0,assert()将在stderr上输出一条错误
   信息,并调用abort()函数中的程序运行.输入的信息是:
   Assertion failed:test,file filename,line linenum
   其中filename是园文件名,linenum是assert()出现的行号,如果在#include<assert.h>
   指令之前的代码中有#define NDEBUG指令,其作用是对assert()语句进行注释,这时
   assert()不起作用,
   格式:void assert(int test)
atof(math.h,stdlib.h)---把由str所指向的字符串转变为一个双精度值,该字符串必须包含一个有效的实型数
,如果不是这样,则返回0.该数值可以为任何字符结尾的,但不能是有效实型数部分,
包含空符号,标点符号(除句点外),和除字符E或e以外的其他字符.这意味着,如果
atof()用100.00HELLO调用,则返回值为100.00
double atof(char *str)
atoi(stdlib.h)---将由str所指向的字符串转换成int型值,,该字符串必须包含一个有效的实型数
,如果不是这样,则返回0.该数值可以为任何字符结尾的,但不能是有效实型数部分,
包含空符号,标点符号(除句点外),和除字符E或e以外的其他字符.
如果atoi()用123.23调用,则返回整形值123,且舍去.23
int atoi(char *str)
atol(stdlib.h)---把由str所指向的字符串转变为一个长整形数,该字符串必须包含一个有效的实型数
,如果不是这样,则返回0.该数值可以为任何字符结尾的,但不能是有效实型数部分,
包含空符号,标点符号(除句点外),和除字符E或e以外的其他字符.
如果atol用123.23调用,则返回值为123
long atol(char *str)
bsearch(stdlib.h)---在由base所指向的排序数组中执行二元搜索,并返回指向与由key所指向的关键字相匹配
    的第一个元素的指针.数组中元素的值是由num指定的,并且每个元素的大小(由字节表示)
    是由size所给定的
    数据类型size_t是unsigned int;
    由compare所指向的函数用来将数组元素同关键字进行比较,函数的形式为:
    func_name(arg1,arg2)
    void *arg1,*arg2;
   如果arg1<arg2,返回值<0
   如果arg1=arg2,返回值=0
   如果arg1>arg2,返回值>0
如果数组没有包含关键字,则返回空指针
void *bsearch(const void *key,const void *base,unsigned num,unsigned size,int (*compare)(const void *,const void*))
_clear87(float.h)--重新设置80x87硬件浮点协处理器的状态字.为了使用任何以8087/80x87为基础的函数,
  你的系统中必须装有8087/80287的数字协处理器
  unsigned int_clear87(void)
_control87(float.h)---用于取得或改变浮点控制字.浮点控制字是一个unsigned int类型,它的每一位指明
 浮点中的某种模式,即精度,无穷大和舍入模式.改变这些模式可以屏蔽或开放浮点异常处理器
 _control87函数把mask中的每一位同new的对应位相匹配.如果mask中的一位等于1,则
new中的对应位就是包含着浮点控制字中的同一位的新值,_control87便将控制字中的那一位
变成新值.以下是工作过程的简单示意:
原控制字: 0100 0011 0110 0011
mask: 1000 0001 0100 1111
new: 1110 1001 0000 0101
改变位: 1--- ---1 -0-- 0101
unsigned int _control87(unsigned int new,unsigned int mask)
div(stdlib.h)---返回number/denom操作的商和余数.div_t类型的结构定义在stdlib.h中,并有以下2个域
int quot;/*商*/
int rem;/*余数*/
div_t div(int number,int denom)
ecvt(stdlib.h)---将value转换成长度为ndigit的字符串.调用该函数后,有dec所指向的变量表示小数点的位置
 如果小数点在数的左边,则dec指向的数为负;如果有sign所指向的变量的为负,则该数为负
 函数ecvt()返回指向保存表示数值的字符串的静态数据区的指针
 char *ecvt(double value,int ndigit,int *dec,int *sign)
fcvt(stdlib.h)---除了输出是按于Fortran兼容的F格式舍入外,与ecvt()功能相同,返回指向保存表示数字字符
串的静态数据区的指针.char *fcvt(double value,int ndigit,int *dec,int *sign)
_fpreset(float.h)--重新设置浮点数字运算系统.在函数system(),exec(),spawn,signal()执行以后,也许要
  重新设置浮点例行程序,void _fpreset(void)
gcvt(stdlib.h)---把值value转换为长度为ndigit的字符串,转换后的字符串输出保存在buf所指向的数组中
 ,如果可能就用Fortran F格式,否则就用E格式.返回一个指向buf的指针
 char *gcvt(double value,int ndigit,char *buf)
getenv(stdlib.h)--返回一个指向环境变量信息的指针,该信息与由name所指向的在dos环境信息表中有关的
  字符串有关.程序的环境可以包括诸如路径名和联机设备.该数据的准确含义是由dos定义的
  如果用一个与任何环境数据都不匹配的参数调用getenv(),则返回的是空指针
  char *getenv(char *name)
itoa(stdlib.h)---把整型数num转换成与其等价的字符串,且把其结果放在由str所指向的字符串中,字符串
 输出的进制是由radix确定的,他可以在2到36的范围内变化
 该函数返回由str所指向的指针,一般没有错误返回值.调用itoa()时,一定要用足够的长度
 的字符串来保存转换后的结果,所需要的最大长度是17字节
 char *itoa(int num,char *str,int radix)
ldiv(stdlib.h)--返回number/denom操作的商和余数,ldiv_t类型的结构定义在stdlib.h中,并具有下面两个域
long quct;/*商*/
long rem;/*余数*/
ldiv_t ldiv(long number,long denom)
lfind/lsearch(stdlib.h)--着两个函数在由base所指向的数组上执行现行搜索,并且返回指向第一个与被搜索
 条目匹配的元素指针.key指向被搜索的条目.数组中的元素的数量由num指定,并且
 元素的大小(byte)由size所描述的
 类型size_t为unsigned int型
    由compare所指向的函数用来将数组元素同关键字进行比较,函数的形式为:
    func_name(arg1,arg2)
    void *arg1,*arg2;
   如果arg1<arg2,返回值<0
   如果arg1=arg2,返回值=0
被搜索的数组不一定被分类
如果数组不包含搜索条目,返回空指针
lsearch和lfind的区别在于,如果所要搜索的条目不存在,函数lsearch将把该条目
添加到数组的结尾;
void *lfind(const void *key,const void *base,size_t *num,size_t size,int (*compare)(const void *,const void*))
void *lsearch(const void *key,const void *base,size_t *num,size_t size,int (*compare)(const void *,const void*))
longjmp(setjmp.h)--指令使程序在上一次调用setjmp()的点处继续执行.着两个函数是tc提供的函数之间
条转的方法.注:程序头部需要嵌入setjmp.h
longjmp是靠根据envbuf重新设置堆栈来操作的,而envbuf必须是由上次调用setjmp时所设置的
,这使程序在setjmp下面的语句继续执行.
缓冲区envbuf具有类型jmp_buf,该类型在setjmp.h中定义,缓冲区必须在调用longjmp之前
调用setjmp来设置
val值为setjmp的返回值,并且根据这个值可确定他是从哪里条转过来的.该值不能为0
函数longjmp最常见的方法是当一个错误发生时,从深层次子程序返回
void longjmp(jmp_buf envbuf,int val)
ltoa(stdlib.h)--把长整数转换为字符串,并把结果存入str指向的字符串中,字符串的输入值的进制数由
radix确定的,他一般在2~36的范围内变化
返回指向str的指针,注:一定要使用足够长度的字符串来保存转换后的结果,所需最大长度
是33字节
char *ltoa(long num,char *str,int radix)
nosound(dos.h)--用来关闭pc扬声器,void nosound(void)
putenv(stdlib.h)把环境变量放到dos中,int putenv(char *evar)
qsort(stdlib.h)--用快速分类法对由base所指向的数组分类,数组被分类直到结尾.数组中的元素个数由num
给出,并且每个元素的大小(用字节表示)由size描述
    由compare所指向的函数用来将数组元素同关键字进行比较,函数的形式为:
    func_name(arg1,arg2)
    void *arg1,*arg2;
   如果arg1<arg2,返回值<0
   如果arg1=arg2,返回值=0
   如果arg1>arg2,返回值>0
void qsort(void *base,int num,int size,int (*compare)())
raise(signal.h)---raise允许一个程序执行过程中给自己发一个信号,以便处理器执行该信号所规定的动作
 (由signal()设定),以下是已定义的信号类型:
SIGABRT(22) 退出
SIGFPE(8) 浮点陷阱
SIGIII(4) 非法指令
SIGINT(2) 中断
SIGSEGV(11) 存贮存取违反
SIGTERM(15) 终止
int raise(int sig)
rand(stdlib.h)--产生一系列的伪随机数.每调用一次,他就返回一个0到RAND_MAX之间的整数
int rand(void)
random/randomize(stdlib.h)--random返回一个0到num范围内的随机数
  randomize通过初始化随机数发生器使之产生一个随机数,它使用time()函数,
  所以要用time.h
int random(int num)
void randomize(void)
使用实先调用randomize初始化,再用random()产生随机数
setjmp(stdlib.h)--用缓冲区envbuf保存系统堆栈的内容,以便后续的longjmp()调用,函数初次使用返回0值
  但当其执行时,longjmp传递一个参数(永远非零)给setjmp(),看起来像setjmp的值
  int setjmp(jmp_buf envbuf)
signal(signal.h)---用于指定某一个信号的对应动作,该信号是由raise()函数激发或发生异常情况产生的
   sigfun是一个指向行数指针的类型:
   typedef void (*sigfun)(int subcode);
  frame为一个动作函数
  SIG_DFI 终止程序执行(缺省值)
  SIG_IGN 忽略该信号
  SIG_ERR 返回错误代码
int signal(int sig,sigfun frame)
sound(dos.h)---可以按照给定频率打开扬声器.参数frequeney以赫兹为单位来表示频率.可以用nosound关闭
扬声器,
void sound(unsigned frequeney)
srand(stdlib.h)--用来建立由rand()所产生的序列值的起始点(rand()函数返回伪随机数).
void srand(unsigned seed)
_status87(void)--用来返回状态字的值,用该函数之前,必须在计算机里装有80x87的协处理器
 unsigned int _status87(void)
strtod(stdio.h)---把由start所指向的数字形式的字符串转换成双精度数,并且返回结果,如用100.00pliers
  调用,返回值为100.00,end则指向位于pliers之前的空格,如果strtod返回HUGE_VAL表示
  上溢,返回HUGE_VAL表示下溢,如果无法转换,返回0,如果成功返回转换后的值
  double strtod(char *start,char **end)
strtol(stdlib.h)把储存在start所指向的,以数值形式表示的字符串转变成为一个长整型数(long int),
并返回其转换结果.数值的进制由radix确定,
如:用100 pliers调用参数调用strtol()则返回值为100L,其余同STRTOD
long int strtol(char *start,char **end,int radix)
strtoul(stdlib.h)---函数strtoul将字符串转变为一个无符号长整数
swab(stdlib.h)从source指向的字符串中拷贝num字节到dest中,相邻的偶数字节与奇数字节交换位置
void swab(char *source,char *dest,int num)
ultoa(stdlib.h)---将无符号的长整形数转换成字符串,并且把结果存入由str所指向的字符串中,字符串
  输出的进制数由radix确定,他一般在2~36之间取值.
  函数ultoa()返回指向str的指针,调用ultoa()时,一定要用足够长度的字符串来保存转
  换后的结果,最大长的为33字节,其中包括一个表示终止的符号'/0'

 



突破显示颜色的限制:如:outportb(0x3c8,颜色号)
outportb(0x3c9,红色分量)
outportb(0x3c9,绿色分量)
outportb(0x3c9,蓝色分量)
单色显卡显示内存所在:b0000000;  如:buf=(char far *)0xb0000000;
彩色显卡显示内存所在:b8000000;  如:buf=(char far*)0xb8000000;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值