C语言库函数大全及应用实例九 函数名: mktemp 功 能: 建立唯一的文件名 用 法: char *mktemp(char *template); 程序例:
#i nclude #i nclude
int main(void) { /* fname defines the template for the temporary file. */
char *fname = "TXXXXXX", *ptr;
ptr = mktemp(fname); printf("%s\n",ptr); return 0; }
函数名: MK_FP 功 能: 设置一个远指针 用 法: void far *MK_FP(unsigned seg, unsigned off); 程序例:
#i nclude #i nclude
int main(void) { int gd, gm, i; unsigned int far *screen;
detectgraph(&gd, &gm); if (gd == HERCMONO) screen = MK_FP(0xB000, 0); else screen = MK_FP(0xB800, 0); for (i=0; i<26; i++) screen = 0x0700 + ('a' + i); return 0; }
函数名: modf 功 能: 把数分为指数和尾数 用 法: double modf(double value, double *iptr); 程序例:
#i nclude #i nclude
int main(void) { double fraction, integer; double number = 100000.567;
fraction = modf(number, &integer); printf("The whole and fractional parts of %lf are %lf and %lf\n", number, integer, fraction); return 0; }
函数名: movedata 功 能: 拷贝字节 用 法: void movedata(int segsrc, int offsrc, int segdest, int offdest, unsigned numbytes); 程序例:
#i nclude
#define MONO_BASE 0xB000
/* saves the contents of the monochrome screen in buffer */ void save_mono_screen(char near *buffer) { movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2); }
int main(void) { char buf[80*25*2]; save_mono_screen(buf); }
函数名: moverel 功 能: 将当前位置(CP)移动一相对距离 用 法: void far moverel(int dx, int dy); 程序例:
#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 the C.P. to location (20, 30) */ moveto(20, 30);
/* plot a pixel at the C.P. */ putpixel(getx(), gety(), getmaxcolor());
/* create and output a message at (20, 30) */ sprintf(msg, " (%d, %d)", getx(), gety()); outtextxy(20, 30, msg);
/* move to a point a relative distance */ /* away from the current value of C.P. */ moverel(100, 100);
/* plot a pixel at the C.P. */ putpixel(getx(), gety(), getmaxcolor());
/* create and output a message at C.P. */ sprintf(msg, " (%d, %d)", getx(), gety()); outtext(msg);
/* clean up */ getch(); closegraph(); return 0; }
函数名: movetext 功 能: 将屏幕文本从一个矩形区域拷贝到另一个矩形区域 用 法: int movetext(int left, int top, int right, int bottom, int newleft, int newtop); 程序例: #i nclude #i nclude
int main(void) { char *str = "This is a test string";
clrscr(); cputs(str); getch();
movetext(1, 1, strlen(str), 2, 10, 10); getch();
return 0; }
函数名: moveto 功 能: 将CP移到(x, y) 用 法: void far moveto(int x, int y); 程序例:
#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 the C.P. to location (20, 30) */ moveto(20, 30);
/* plot a pixel at the C.P. */ putpixel(getx(), gety(), getmaxcolor());
/* create and output a message at (20, 30) */ sprintf(msg, " (%d, %d)", getx(), gety()); outtextxy(20, 30, msg);
/* move to (100, 100) */ moveto(100, 100);
/* plot a pixel at the C.P. */ putpixel(getx(), gety(), getmaxcolor());
/* create and output a message at C.P. */ sprintf(msg, " (%d, %d)", getx(), gety()); outtext(msg);
/* clean up */ getch(); closegraph(); return 0; }
函数名: movemem 功 能: 移动一块字节 用 法: void movemem(void *source, void *destin, unsigned len); 程序例:
#i nclude #i nclude #i nclude #i nclude
int main(void) { char *source = "Borland International"; char *destination; int length;
length = strlen(source); destination = malloc(length + 1); movmem(source,destination,length); printf("%s\n",destination);
return 0; }
函数名: normvideo 功 能: 选择正常亮度字符 用 法: void normvideo(void); 程序例:
#i nclude
int main(void) { normvideo(); cprintf("NORMAL Intensity Text\r\n"); return 0; }
函数名: nosound 功 能: 关闭PC扬声器 用 法: void nosound(void); 程序例:
/* Emits a 7-Hz tone for 10 seconds.
True story: 7 Hz is the resonant frequency of a chicken's skull cavity. This was determined empirically in Australia, where a new factory generating 7-Hz tones was located too close to a chicken ranch: When the factory started up, all the chickens died.
Your PC may not be able to emit a 7-Hz tone. */
int main(void) { sound(7); delay(10000); nosound(); }
void normvideo(void ); 选择正常亮度字符。 将文本属性(前景和背景)置为启动程序时它所具有的值,来选择标准字符。
void nosound(void ); 关闭由调用 sound而发声的扬声器。
函数名: open 功 能: 打开一个文件用于读或写 用 法: int open(char *pathname, int access[, int permiss]); 程序例:
#i nclude #i nclude #i nclude #i nclude
int main(void) { int handle; char msg[] = "Hello world";
if ((handle = open("TEST.$$$", O_CREAT | O_TEXT)) == -1) { perror("Error:"); return 1; } write(handle, msg, strlen(msg)); close(handle); return 0; }
函数名: outport 功 能: 输出整数到硬件端口中 用 法: void outport(int port, int value); 程序例:
#i nclude #i nclude int main(void) { int value = 64; int port = 0;
outportb(port, value); printf("Value %d sent to port number %d\n", value, port); return 0; }
函数名: outportb 功 能: 输出字节到硬件端口中 用 法: void outportb(int port, char byte); 程序例:
#i nclude #i nclude
int main(void) { int value = 64; int port = 0;
outportb(port, value); printf("Value %d sent to port number %d\n", value, port); return 0; }
函数名: outtext 功 能: 在视区显示一个字符串 用 法: void far outtext(char far *textstring); 程序例:
#i nclude #i nclude #i nclude #i nclude
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy;
/* 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 */ }
midx = getmaxx() / 2; midy = getmaxy() / 2;
/* move the C.P. to the center of the screen */ moveto(midx, midy);
/* output text starting at the C.P. */ outtext("This "); outtext("is "); outtext("a "); outtext("test.");
/* clean up */ getch(); closegraph(); return 0; }
函数名: outtextxy 功 能: 在指定位置显示一字符串 用 法: void far outtextxy(int x, int y, char *textstring); 程序例:
#i nclude #i nclude #i nclude #i nclude
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy;
/* 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 */ }
midx = getmaxx() / 2; midy = getmaxy() / 2;
/* output text at the center of the screen*/ /* Note: the C.P. doesn't get changed.*/ outtextxy(midx, midy, "This is a test.");
/* clean up */ getch(); closegraph(); return 0; }
函数名: parsfnm 功 能: 分析文件名 用 法: char *parsfnm (char *cmdline, struct fcb *fcbptr, int option); 程序例:
#i nclude #i nclude #i nclude #i nclude
int main(void) { char line[80]; struct fcb blk;
/* get file name */ printf("Enter drive and file name (no path - ie. a:file.dat)\n"); gets(line);
/* put file name in fcb */ if (parsfnm(line, &blk, 1) == NULL) printf("Error in parsfm call\n"); else printf("Drive #%d Name: %11s\n", blk.fcb_drive, blk.fcb_name);
return 0; }
函数名: peek 功 能: 检查存储单元 用 法: int peek(int segment, unsigned offset); 程序例:
#i nclude #i nclude #i nclude
int main(void) { int value = 0;
printf("The current status of your keyboard is:\n"); value = peek(0x0040, 0x0017); if (value & 1) printf("Right shift on\n"); else printf("Right shift off\n");
if (value & 2) printf("Left shift on\n"); else printf("Left shift off\n");
if (value & 4) printf("Control key on\n"); else printf("Control key off\n");
if (value & 8) printf("Alt key on\n"); else printf("Alt key off\n");
if (value & 16) printf("Scroll lock on\n"); else printf("Scroll lock off\n");
if (value & 32) printf("Num lock on\n"); else printf("Num lock off\n");
if (value & 64) printf("Caps lock on\n"); else printf("Caps lock off\n");
return 0; }
函数名: peekb 功 能: 检查存储单元 用 法: char peekb (int segment, unsigned offset); 程序例:
#i nclude #i nclude #i nclude
int main(void) { int value = 0;
printf("The current status of your keyboard is:\n"); value = peekb(0x0040, 0x0017); if (value & 1) printf("Right shift on\n"); else printf("Right shift off\n");
if (value & 2) printf("Left shift on\n"); else printf("Left shift off\n");
if (value & 4) printf("Control key on\n"); else printf("Control key off\n");
if (value & 8) printf("Alt key on\n"); else printf("Alt key off\n");
if (value & 16) printf("Scroll lock on\n"); else printf("Scroll lock off\n");
if (value & 32) printf("Num lock on\n"); else printf("Num lock off\n");
if (value & 64) printf("Caps lock on\n"); else printf("Caps lock off\n");
return 0; }
函数名: perror 功 能: 系统错误信息 用 法: void perror(char *string); 程序例:
#i nclude
int main(void) { FILE *fp;
fp = fopen("perror.dat", "r"); if (!fp) perror("Unable to open file for reading"); return 0; }
函数名: pieslice 功 能: 绘制并填充一个扇形 用 法: void far pieslice(int x, int stanle, int endangle, int radius); 程序例:
#i nclude #i nclude #i nclude #i nclude
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy; int stangle = 45, endangle = 135, radius = 100;
/* 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 */ }
midx = getmaxx() / 2; midy = getmaxy() / 2;
/* set fill style and draw a pie slice */ setfillstyle(EMPTY_FILL, getmaxcolor()); pieslice(midx, midy, stangle, endangle, radius);
/* clean up */ getch(); closegraph(); return 0; }
|