首页 > 代码库 > C语言库函数大全及应用实例七
C语言库函数大全及应用实例七
函数名: getw
功 能: 从流中取一整数
用 法: int getw(FILE *strem);
程序例: <?xml:namespace prefix="o" ns="urn:schemas-microsoft-com:office:office"?>
#i nclude
#i nclude
#define FNAME "test.$$$"
int main(void)
{
FILE *fp;
int word;
/* place the word in a file */
fp = fopen(FNAME, "wb");
if (fp == NULL)
{
printf("Error opening file %s\n", FNAME);
exit(1);
}
word = 94;
putw(word,fp);
if (ferror(fp))
printf("Error writing to file\n");
else
printf("Successful write\n");
fclose(fp);
/* reopen the file */
fp = fopen(FNAME, "rb");
if (fp == NULL)
{
printf("Error opening file %s\n", FNAME);
exit(1);
}
/* extract the word */
word = getw(fp);
if (ferror(fp))
printf("Error reading file\n");
else
printf("Successful read: word = %d\n", word);
/* clean up */
fclose(fp);
unlink(FNAME);
return 0;
}
函数名: getx
功 能: 返回当前图形位置的x坐标
用 法: int far getx(void);
程序例:
#i nclude
#i nclude
#i nclude
#i nclude
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
char msg[80];
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
/* move to the screen center point */
moveto(getmaxx() / 2, getmaxy() / 2);
/* create a message string */
sprintf(msg, "<-(%d, %d) is the here.", getx(), gety());
/* display the message */
outtext(msg);
/* clean up */
getch();
closegraph();
return 0;
}
函数名: gety
功 能: 返回当前图形位置的y坐标
用 法: int far gety(void);
程序例:
#i nclude
#i nclude
#i nclude
#i nclude
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
char msg[80];
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
/* move to the screen center point */
moveto(getmaxx() / 2, getmaxy() / 2);
/* create a message string */
sprintf(msg, "<-(%d, %d) is the here.", getx(), gety());
/* display the message */
outtext(msg);
/* clean up */
getch();
closegraph();
return 0;
}
函数名: gmtime
功 能: 把日期和时间转换为格林尼治标准时间(GMT)
用 法: struct tm *gmtime(long *clock);
程序例:
#i nclude
#i nclude
#i nclude
#i nclude
/* Pacific Standard Time & Daylight Savings */
char *tzstr = "TZ=PST8PDT";
int main(void)
{
time_t t;
struct tm *gmt, *area;
putenv(tzstr);
tzset();
t = time(NULL);
area = localtime(&t);
printf("Local time is: %s", asctime(area));
gmt = gmtime(&t);
printf("GMT is: %s", asctime(gmt));
return 0;
}
函数名: gotoxy
功 能: 在文本窗口中设置光标
用 法: void gotoxy(int x, int y);
程序例:
#i nclude
int main(void)
{
clrscr();
gotoxy(35, 12);
cprintf("Hello world");
getch();
return 0;
}
函数名: gotoxy
功 能: 在文本窗口中设置光标
用 法: void gotoxy(int x, int y);
程序例:
#i nclude
int main(void)
{
clrscr();
gotoxy(35, 12);
cprintf("Hello world");
getch();
return 0;
}
函数名: graphdefaults
功 能: 将所有图形设置复位为它们的缺省值
用 法: void far graphdefaults(void);
程序例:
#i nclude
#i nclude
#i nclude
#i nclude
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int maxx, maxy;
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "c:\\bor\\Borland\\bgi");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
maxx = getmaxx();
maxy = getmaxy();
/* output line with non-default settings */
setlinestyle(DOTTED_LINE, 0, 3);
line(0, 0, maxx, maxy);
outtextxy(maxx/2, maxy/3, "Before default values are restored.");
getch();
/* restore default values for everything */
graphdefaults();
/* clear the screen */
cleardevice();
/* output line with default settings */
line(0, 0, maxx, maxy);
outtextxy(maxx/2, maxy/3, "After restoring default values.");
/* clean up */
getch();
closegraph();
return 0;
}
函数名: grapherrormsg #i nclude #define NONSENSE -50 int main(void) /* initialize graphics mode */ /* read result of initialization */ /* if an error occurred, then output a */ /* draw a line */ /* clean up */ 函数名: graphresult #i nclude int main(void) /* initialize graphics and local variables */ /* read result of initialization */ if (errorcode != grOk) /* an error occurred */ /* draw a line */ /* clean up */ 函数名: _graphfreemem #i nclude int main(void) /* clear the text screen */ /* initialize graphics and local variables */ /* read result of initialization */ midx = getmaxx() / 2; /* display a message */ /* clean up */ /* called by the graphics kernel to allocate memory */ /* allocate memory from far heap */ /* called by the graphics kernel to free memory */ /* free ptr from far heap */ 函数名: _graphgetmem #i nclude int main(void) /* clear the text screen */ /* initialize graphics and local variables */ /* read result of initialization */ midx = getmaxx() / 2; /* display a message */ /* clean up */ /* called by the graphics kernel to allocate memory */ /* allocate memory from far heap */ /* called by the graphics kernel to free memory */ /* free ptr from far heap */ 函数名: harderr #i nclude error_win(char *msg) cputs(msg); /*prompt for user to press a key to abort, retry, ignore*/ return(retval); /*pragma warn -par reduces warnings which occur int handler(int errval,int ax,int bp,int si) if (ax < 0) int main(void) 函数名: hardresume /* This program will trap disk errors and prompt the user for action. */ #i nclude #define IGNORE 0 int buf[500]; /* define the error messages for trapping disk problems */ error_win(char *msg) cputs(msg); /* prompt for user to press a key to abort, retry, ignore */ return(retval); /* pragma warn -par reduces warnings which occur due to the non use */ int handler(int errval,int ax,int bp,int si) di= _DI; if (ax < 0) int main(void) 函数名: highvideo #i nclude int main(void) lowvideo(); return 0; 函数名: hypot #i nclude int main(void) result = hypot(x, y); return 0; #i nclude #define ARROW_SIZE 10 void draw_arrow(int x, int y); int main(void) /* initialize graphics and local variables */ /* read result of initialization */ maxx = getmaxx(); /* draw the image to be grabbed */ /* calculate the size of the image */ /* allocate memory to hold the image */ /* grab the image */ /* repeat until a key is pressed */ x += ARROW_SIZE; /* plot new image */ /* clean up */ void draw_arrow(int x, int y) 函数名: initgraph #i nclude int main(void) /* initialize graphics mode */ /* read result of initialization */ if (errorcode != grOk) /* an error occurred */ /* draw a line */ /* clean up */ 函数名: inport #i nclude int main(void) result = inport(port); 函数名: insline #i nclude int main(void) 函数名: installuserdriver #i nclude /* function prototypes */ int main(void) /* install a user written device driver */ /* must force use of detection routine */ /* check for any installation errors */ /* initialize graphics and local variables */ /* check for any initialization errors */ /* draw a line */ /* clean up */ /* detects EGA or VGA cards */ detectgraph(&driver, &mode); /* check for and report any graphics errors */ /* read result of last graphics operation */ 函数名: installuserfont #i nclude /* function prototype */ int main(void) /* initialize graphics and local variables */ midx = getmaxx() / 2; /* check for any initialization errors */ /* install a user defined font file */ /* check for any installation errors */ /* select the user font */ /* output some text */ /* clean up */ /* check for and report any graphics errors */ /* read result of last graphics operation */ 函数名: int86 #i nclude #define VIDEO 0x10 void movetoxy(int x, int y) regs.h.ah = 2; /* set cursor postion */ int main(void) 函数名: int86x #i nclude int main(void) printf("Enter filename: "); 函数名: intdos #i nclude
功 能: 返回一个错误信息串的指针
用 法: char *far grapherrormsg(int errorcode);
程序例:
#i nclude
#i nclude
#i nclude
{
/* FORCE AN ERROR TO OCCUR */
int gdriver = NONSENSE, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
/* descriptive error message. */
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
line(0, 0, getmaxx(), getmaxy());
getch();
closegraph();
return 0;
}
功 能: 返回最后一次不成功的图形操作的错误代码
用 法: int far graphresult(void);
程序例:
#i nclude
#i nclude
#i nclude
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
line(0, 0, getmaxx(), getmaxy());
getch();
closegraph();
return 0;
}
功 能: 用户可修改的图形存储区释放函数
用 法: void far _graphfreemem(void far *ptr, unsigned size);
程序例:
#i nclude
#i nclude
#i nclude
#i nclude
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
clrscr();
printf("Press any key to initialize graphics mode:");
getch();
clrscr();
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
midy = getmaxy() / 2;
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, "Press any key to exit graphics mode:");
getch();
closegraph();
return 0;
}
void far * far _graphgetmem(unsigned size)
{
printf("_graphgetmem called to allocate %d bytes.\n", size);
printf("hit any key:");
getch();
printf("\n");
return farmalloc(size);
}
void far _graphfreemem(void far *ptr, unsigned size)
{
printf("_graphfreemem called to free %d bytes.\n", size);
printf("hit any key:");
getch();
printf("\n");
farfree(ptr);
}
功 能: 用户可修改的图形存储区分配函数
用 法: void far *far _graphgetmem(unsigned size);
程序例:
#i nclude
#i nclude
#i nclude
#i nclude
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
clrscr();
printf("Press any key to initialize graphics mode:");
getch();
clrscr();
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
midy = getmaxy() / 2;
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, "Press any key to exit graphics mode:");
getch();
closegraph();
return 0;
}
void far * far _graphgetmem(unsigned size)
{
printf("_graphgetmem called to allocate %d bytes.\n", size);
printf("hit any key:");
getch();
printf("\n");
return farmalloc(size);
}
void far _graphfreemem(void far *ptr, unsigned size)
{
printf("_graphfreemem called to free %d bytes.\n", size);
printf("hit any key:");
getch();
printf("\n");
farfree(ptr);
}
功 能: 建立一个硬件错误处理程序
用 法: void harderr(int (*fptr)());
程序例:
/*This program will trap disk errors and prompt
the user for action. Try running it with no
disk in drive A: to invoke its functions.*/
#i nclude
#i nclude
#define IGNORE 0
#define RETRY 1
#define ABORT 2
int buf[500];
/*define the error messages for trapping disk problems*/
static char *err_msg[] = {
"write protect",
"unknown unit",
"drive not ready",
"unknown command",
"data error (CRC)",
"bad request",
"seek error",
"unknown media type",
"sector not found",
"printer out of paper",
"write fault",
"read fault",
"general failure",
"reserved",
"reserved",
"invalid disk change"
};
{
int retval;
while(1)
{
retval= getch();
if (retval == ‘a‘ || retval == ‘A‘)
{
retval = ABORT;
break;
}
if (retval == ‘r‘ || retval == ‘R‘)
{
retval = RETRY;
break;
}
if (retval == ‘i‘ || retval == ‘I‘)
{
retval = IGNORE;
break;
}
}
}
due to the non use of the parameters errval,
bp and si to the handler.*/
#pragma warn -par
{
static char msg[80];
unsigned di;
int drive;
int errorno;
di= _DI;
/*if this is not a disk error then it was
another device having trouble*/
{
/* report the error */
error_win("Device error");
/* and return to the program directly requesting abort */
hardretn(ABORT);
}
/* otherwise it was a disk error */
drive = ax & 0x00FF;
errorno = di & 0x00FF;
/* report which error it was */
sprintf(msg, "Error: %s on drive %c\r\nA)bort, R)etry, I)gnore: ",
err_msg[errorno], ‘A‘ + drive);
/*
return to the program via dos interrupt 0x23 with abort, retry,
or ignore as input by the user.
*/
hardresume(error_win(msg));
return ABORT;
}
#pragma warn +par
{
/*
install our handler on the hardware problem interrupt
*/
harderr(handler);
clrscr();
printf("Make sure there is no disk in drive A:\n");
printf("Press any key ....\n");
getch();
printf("Trying to access drive A:\n");
printf("fopen returned %p\n",fopen("A:temp.dat", "w"));
return 0;
}
功 能: 硬件错误处理函数
用 法: void hardresume(int rescode);
程序例:
/* Try running it with no disk in drive A: to invoke its functions */
#i nclude
#i nclude
#define RETRY 1
#define ABORT 2
static char *err_msg[] = {
"write protect",
"unknown unit",
"drive not ready",
"unknown command",
"data error (CRC)",
"bad request",
"seek error",
"unknown media type",
"sector not found",
"printer out of paper",
"write fault",
"read fault",
"general failure",
"reserved",
"reserved",
"invalid disk change"
};
{
int retval;
while(1)
{
retval= getch();
if (retval == ‘a‘ || retval == ‘A‘)
{
retval = ABORT;
break;
}
if (retval == ‘r‘ || retval == ‘R‘)
{
retval = RETRY;
break;
}
if (retval == ‘i‘ || retval == ‘I‘)
{
retval = IGNORE;
break;
}
}
}
/* of the parameters errval, bp and si to the handler. */
#pragma warn -par
{
static char msg[80];
unsigned di;
int drive;
int errorno;
/* if this is not a disk error then it was another device having trouble */
{
/* report the error */
error_win("Device error");
/* and return to the program directly
requesting abort */
hardretn(ABORT);
}
/* otherwise it was a disk error */
drive = ax & 0x00FF;
errorno = di & 0x00FF;
/* report which error it was */
sprintf(msg, "Error: %s on drive %c\r\nA)bort, R)etry, I)gnore: ",
err_msg[errorno], ‘A‘ + drive);
/* return to the program via dos interrupt 0x23 with abort, retry */
/* or ignore as input by the user. */
hardresume(error_win(msg));
return ABORT;
}
#pragma warn +par
{
/* install our handler on the hardware problem interrupt */
harderr(handler);
clrscr();
printf("Make sure there is no disk in drive A:\n");
printf("Press any key ....\n");
getch();
printf("Trying to access drive A:\n");
printf("fopen returned %p\n",fopen("A:temp.dat", "w"));
return 0;
}
功 能: 选择高亮度文本字符
用 法: void highvideo(void);
程序例:
{
clrscr();
cprintf("Low Intensity text\r\n");
highvideo();
gotoxy(1,2);
cprintf("High Intensity Text\r\n");
}
功 能: 计算直角三角形的斜边长
用 法: double hypot(double x, double y);
程序例:
#i nclude
{
double result;
double x = 3.0;
double y = 4.0;
printf("The hypotenuse is: %lf\n", result);
}
功 能: 返回保存位图像所需的字节数
用 法: unsigned far imagesize(int left, int top, int right, int bottom);
程序例:
#i nclude
#i nclude
#i nclude
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
void *arrow;
int x, y, maxx;
unsigned int size;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
x = 0;
y = getmaxy() / 2;
draw_arrow(x, y);
size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);
arrow = malloc(size);
getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);
while (!kbhit())
{
/* erase old image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
if (x >= maxx)
x = 0;
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
}
free(arrow);
closegraph();
return 0;
}
{
/* draw an arrow on the screen */
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);
}
功 能: 初始化图形系统
用 法: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);
程序例:
#i nclude
#i nclude
#i nclude
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}
line(0, 0, getmaxx(), getmaxy());
getch();
closegraph();
return 0;
}
功 能: 从硬件端口中输入
用 法: int inp(int protid);
程序例:
#i nclude
{
int result;
int port = 0; /* serial port 0 */
printf("Word read from port %d = 0x%X\n", port, result);
return 0;
}
功 能: 在文本窗口中插入一个空行
用 法: void insline(void);
程序例:
{
clrscr();
cprintf("INSLINE inserts an empty line in the text window\r\n");
cprintf("at the cursor position using the current text\r\n");
cprintf("background color. All lines below the empty one\r\n");
cprintf("move down one line and the bottom line scrolls\r\n");
cprintf("off the bottom of the window.\r\n");
cprintf("\r\nPress any key to continue:");
gotoxy(1, 3);
getch();
insline();
getch();
return 0;
}
功 能: 安装设备驱动程序到BGI设备驱动程序表中
用 法: int far installuserdriver(char far *name, int (*detect)(void));
程序例:
#i nclude
#i nclude
#i nclude
int huge detectEGA(void);
void checkerrors(void);
{
int gdriver, gmode;
gdriver = installuserdriver("EGA", detectEGA);
gdriver = DETECT;
checkerrors();
initgraph(&gdriver, &gmode, "");
checkerrors();
line(0, 0, getmaxx(), getmaxy());
getch();
closegraph();
return 0;
}
int huge detectEGA(void)
{
int driver, mode, sugmode = 0;
if ((driver == EGA) || (driver == VGA))
/* return suggested video mode number */
return sugmode;
else
/* return an error code */
return grError;
}
void checkerrors(void)
{
int errorcode;
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
}
功 能: 安装未嵌入BGI系统的字体文件(CHR)
用 法: int far installuserfont(char far *name);
程序例:
#i nclude
#i nclude
#i nclude
void checkerrors(void);
{
/* request auto detection */
int gdriver = DETECT, gmode;
int userfont;
int midx, midy;
initgraph(&gdriver, &gmode, "");
midy = getmaxy() / 2;
checkerrors();
userfont = installuserfont("USER.CHR");
checkerrors();
settextstyle(userfont, HORIZ_DIR, 4);
outtextxy(midx, midy, "Testing!");
getch();
closegraph();
return 0;
}
void checkerrors(void)
{
int errorcode;
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
}
功 能: 通用8086软中断接口
用 法: int int86(int intr_num, union REGS *inregs, union REGS *outregs);
程序例:
#i nclude
#i nclude
{
union REGS regs;
regs.h.dh = y;
regs.h.dl = x;
regs.h.bh = 0; /* video page 0 */
int86(VIDEO, ®s, ®s);
}
{
clrscr();
movetoxy(35, 10);
printf("Hello\n");
return 0;
}
功 能: 通用8086软中断接口
用 法: int int86x(int intr_num, union REGS *insegs, union REGS *outregs,
struct SREGS *segregs);
程序例:
#i nclude
#i nclude
{
char filename[80];
union REGS inregs, outregs;
struct SREGS segregs;
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("File attribute: %X\n", outregs.x.cx);
return 0;
}
功 能: 通用DOS接口
用 法: int intdos(union REGS *inregs, union REGS *outregs);
程序例:
#i nclude
C语言库函数大全及应用实例七