C语言函数大全I.docx
《C语言函数大全I.docx》由会员分享,可在线阅读,更多相关《C语言函数大全I.docx(11页珍藏版)》请在冰豆网上搜索。
C语言函数大全I
函数名:
imagesize
功 能:
返回保存位图像所需的字节数
用 法:
unsignedfarimagesize(intleft,inttop,intright,intbottom);
程序例:
#include
#include
#include
#include
#defineARROW_SIZE10
voiddraw_arrow(intx,inty);
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
void*arrow;
intx,y,maxx;
unsignedintsize;
/*initializegraphicsandlocalvariables*/
initgraph(&gdriver,&gmode,"");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk) /*anerroroccurred*/
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);/*terminatewithanerrorcode*/
}
maxx=getmaxx();
x=0;
y=getmaxy()/2;
/*drawtheimagetobegrabbed*/
draw_arrow(x,y);
/*calculatethesizeoftheimage*/
size=imagesize(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE);
/*allocatememorytoholdtheimage*/
arrow=malloc(size);
/*grabtheimage*/
getimage(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE,arrow);
/*repeatuntilakeyispressed*/
while(!
kbhit())
{
/*eraseoldimage*/
putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
x+=ARROW_SIZE;
if(x>=maxx)
x=0;
/*plotnewimage*/
putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
}
/*cleanup*/
free(arrow);
closegraph();
return0;
}
voiddraw_arrow(intx,inty)
{
/*drawanarrowonthescreen*/
moveto(x,y);
linerel(4*ARROW_SIZE,0);
linerel(-2*ARROW_SIZE,-1*ARROW_SIZE);
linerel(0,2*ARROW_SIZE);
linerel(2*ARROW_SIZE,-1*ARROW_SIZE);
}
函数名:
initgraph
功 能:
初始化图形系统
用 法:
voidfarinitgraph(intfar*graphdriver,intfar*graphmode,
charfar*pathtodriver);
程序例:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
/*initializegraphicsmode*/
initgraph(&gdriver,&gmode,"");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk) /*anerroroccurred*/
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1); /*returnwitherrorcode*/
}
/*drawaline*/
line(0,0,getmaxx(),getmaxy());
/*cleanup*/
getch();
closegraph();
return0;
}
函数名:
inport
功 能:
从硬件端口中输入
用 法:
intinp(intprotid);
程序例:
#include
#include
intmain(void)
{
intresult;
intport=0; /*serialport0*/
result=inport(port);
printf("Wordreadfromport%d=0x%X\n",port,result);
return0;
}
函数名:
insline
功 能:
在文本窗口中插入一个空行
用 法:
voidinsline(void);
程序例:
#include
intmain(void)
{
clrscr();
cprintf("INSLINEinsertsanemptylineinthetextwindow\r\n");
cprintf("atthecursorpositionusingthecurrenttext\r\n");
cprintf("backgroundcolor. Alllinesbelowtheemptyone\r\n");
cprintf("movedownonelineandthebottomlinescrolls\r\n");
cprintf("offthebottomofthewindow.\r\n");
cprintf("\r\nPressanykeytocontinue:
");
gotoxy(1,3);
getch();
insline();
getch();
return0;
}
函数名:
installuserdriver
功 能:
安装设备驱动程序到BGI设备驱动程序表中
用 法:
intfarinstalluserdriver(charfar*name,int(*detect)(void));
程序例:
#include
#include
#include
#include
/*functionprototypes*/
inthugedetectEGA(void);
voidcheckerrors(void);
intmain(void)
{
intgdriver,gmode;
/*installauserwrittendevicedriver*/
gdriver=installuserdriver("EGA",detectEGA);
/*mustforceuseofdetectionroutine*/
gdriver=DETECT;
/*checkforanyinstallationerrors*/
checkerrors();
/*initializegraphicsandlocalvariables*/
initgraph(&gdriver,&gmode,"");
/*checkforanyinitializationerrors*/
checkerrors();
/*drawaline*/
line(0,0,getmaxx(),getmaxy());
/*cleanup*/
getch();
closegraph();
return0;
}
/*detectsEGAorVGAcards*/
inthugedetectEGA(void)
{
intdriver,mode,sugmode=0;
detectgraph(&driver,&mode);
if((driver==EGA)||(driver==VGA))
/*returnsuggestedvideomodenumber*/
returnsugmode;
else
/*returnanerrorcode*/
returngrError;
}
/*checkforandreportanygraphicserrors*/
voidcheckerrors(void)
{
interrorcode;
/*readresultoflastgraphicsoperation*/
errorcode=graphresult();
if(errorcode!
=grOk)
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);
}
}
函数名:
installuserfont
功 能:
安装未嵌入BGI系统的字体文件(CHR)
用 法:
intfarinstalluserfont(charfar*name);
程序例:
#include
#include
#include
#include
/*functionprototype*/
voidcheckerrors(void);
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode;
intuserfont;
intmidx,midy;
/*initializegraphicsandlocalvariables*/
initgraph(&gdriver,&gmode,"");
midx=getmaxx()/2;
midy=getmaxy()/2;
/*checkforanyinitializationerrors*/
checkerrors();
/*installauserdefinedfontfile*/
userfont=installuserfont("USER.CHR");
/*checkforanyinstallationerrors*/
checkerrors();
/*selecttheuserfont*/
settextstyle(userfont,HORIZ_DIR,4);
/*outputsometext*/
outtextxy(midx,midy,"Testing!
");
/*cleanup*/
getch();
closegraph();
return0;
}
/*checkforandreportanygraphicserrors*/
voidcheckerrors(void)
{
interrorcode;
/*readresultoflastgraphicsoperation*/
errorcode=graphresult();
if(errorcode!
=grOk)
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);
}
}
函数名:
int86
功 能:
通用8086软中断接口
用 法:
intint86(intintr_num,unionREGS*inregs,unionREGS*outregs);
程序例:
#include
#include
#include
#defineVIDEO0x10
voidmovetoxy(intx,inty)
{
unionREGSregs;
regs.h.ah=2; /*setcursorpostion*/
regs.h.dh=y;
regs.h.dl=x;
regs.h.bh=0; /*videopage0*/
int86(VIDEO,®s,®s);
}
intmain(void)
{
clrscr();
movetoxy(35,10);
printf("Hello\n");
return0;
}
函数名:
int86x
功 能:
通用8086软中断接口
用 法:
intint86x(intintr_num,unionREGS*insegs,unionREGS*outregs,structSREGS*segregs);
程序例:
#include
#include
#include
intmain(void)
{
charfilename[80];
unionREGSinregs,outregs;
structSREGSsegregs;
printf("Enterfilename:
");
gets(filename);
inregs.h.ah=0x43;
inregs.h.al=0x21;
inregs.x.dx=FP_OFF(filename);
segregs.ds=FP_SEG(filename);
int86x(0x21,&inregs,&outregs,&segregs);
printf("Fileattribute:
%X\n",outregs.x.cx);
return0;
}
函数名:
intdos
功 能:
通用DOS接口
用 法:
intintdos(unionREGS*inregs,unionREGS*outregs);
程序例:
#include
#include
/*deletesfilename;returns0onsuccess,nonzeroonfailure*/
intdelete_file(charnear*filename)
{
unionREGSregs;
intret;
regs.h.ah=0x41; /*deletefile*/
regs.x.dx=(unsigned)filename;
ret=intdos(®s,®s);
/*ifcarryflagisset,therewasanerror*/
return(regs.x.cflag?
ret:
0);
}
intmain(void)
{
interr;
err=delete_file("NOTEXIST.$$$");
if(!
err)
printf("AbletodeleteNOTEXIST.$$$\n");
else
printf("NotAbletodeleteNOTEXIST.$$$\n");
return0;
}
函数名:
intdosx
功 能:
通用DOS中断接口
用 法:
intintdosx(unionREGS*inregs,unionREGS*outregs,structSREGS*segregs);
程序例:
#include
#include
/*deletesfilename;returns0onsuccess,nonzeroonfailure*/
intdelete_file(charfar*filename)
{
unionREGSregs;structSREGSsregs;
intret;
regs.h.ah=0x41; /*deletefile*/
regs.x.dx=FP_OFF(filename);
sregs.ds=FP_SEG(filename);
ret=intdosx(®s,®s,&sregs);
/*ifcarryflagisset,therewasanerror*/
return(regs.x.cflag?
ret:
0);
}
intmain(void)
{
interr;
err=delete_file("NOTEXIST.$$$");
if(!
err)
printf("AbletodeleteNOTEXIST.$$$\n");
else
printf("NotAbletodeleteNOTEXIST.$$$\n");
return0;
}
函数名:
intr
功 能:
改变软中断接口
用 法:
voidintr(intintr_num,structREGPACK*preg);
程序例:
#include
#include
#include
#include
#defineCF1 /*Carryflag*/
intmain(void)
{
chardirectory[80];
structREGPACKreg;
printf("Enterdirectorytochangeto:
");
gets(directory);
reg.r_ax=0x3B<<8; /*shift3Bhinto AH*/
reg.r_dx=FP_OFF(directory);
reg.r_ds=FP_SEG(directory);
intr(0x21,®);
if(reg.r_flags&CF)
printf("Directorychangefailed\n");
getcwd(directory,80);
printf("Thecurrentdirectoryis:
%s\n",directory);
return0;
}
函数名:
ioctl
功 能:
控制I/O设备
用 法:
intioctl(inthandle,intcmd[,int*argdx,intargcx]);
程序例:
#include
#include
#include
intmain(void)
{
intstat;
/*usefunc8todetermineifthedefaultdriveisremovable*/
stat=ioctl(0,8,0,0);
if(!
stat)
printf("Drive%cisremovable.\n",getdisk()+'A');
else
printf("Drive%cisnotremovable.\n",getdisk()+'A');