C语言函数大全.docx
AAA.函数名: abort功 能: 异常终止一个进程用 法: void abort(void);程序例:#include <stdio.h>#include <stdlib.h> int main(void) printf("Calling abort()n"); abort(); return 0; /* This is never reached */ 函数名: abs功 能: 求整数的绝对值用 法: int abs(int i);程序例:#include <stdio.h>#include <math.h>int main(void) int number = -1234; printf("number: %d absolute value: %dn", number, abs(number); return 0; 函数名: absread, abswirte功 能: 绝对磁盘扇区读、写数据用 法: int absread(int drive, int nsects, int sectno, void *buffer); int abswrite(int drive, int nsects, in tsectno, void *buffer);程序例:/* absread example */#include <stdio.h>#include <conio.h>#include <process.h>#include <dos.h>int main(void) int i, strt, ch_out, sector; char buf512; printf("Insert a diskette into drive A and press any keyn"); getch(); sector = 0; if (absread(0, 1, sector, &buf) != 0) perror("Disk problem"); exit(1); printf("Read OKn"); strt = 3; for (i=0; i<80; i+) ch_out = bufstrt+i; putchar(ch_out); printf("n"); return(0); 函数名: access功 能: 确定文件的访问权限用 法: int access(const char *filename, int amode);程序例:#include <stdio.h>#include <io.h>int file_exists(char *filename);int main(void) printf("Does NOTEXIST.FIL exist: %sn", file_exists("NOTEXISTS.FIL") ? "YES" : "NO"); return 0;int file_exists(char *filename) return (access(filename, 0) = 0); 函数名: acos功 能: 反余弦函数用 法: double acos(double x);程序例:#include <stdio.h>#include <math.h>int main(void) double result; double x = 0.5; result = acos(x); printf("The arc cosine of %lf is %lfn", x, result); return 0; 函数名: allocmem功 能: 分配DOS存储段用 法: int allocmem(unsigned size, unsigned *seg);程序例:#include <dos.h>#include <alloc.h>#include <stdio.h>int main(void) unsigned int size, segp; int stat; size = 64; /* (64 x 16) = 1024 bytes */ stat = allocmem(size, &segp); if (stat = -1) printf("Allocated memory at segment: %xn", segp); else printf("Failed: maximum number of paragraphs available is %un", stat); return 0; 函数名: arc功 能: 画一弧线用 法: void far arc(int x, int y, int stangle, int endangle, int radius);程序例:#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>int main(void) /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy; int stangle = 45, endangle = 135; int radius = 100; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); /* an error occurred */ if (errorcode != grOk) printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor(); /* draw arc */ arc(midx, midy, stangle, endangle, radius); /* clean up */ getch(); closegraph(); return 0; 函数名: asctime功 能: 转换日期和时间为ASCII码用 法: char *asctime(const struct tm *tblock);程序例:#include <stdio.h>#include <string.h>#include <time.h>int main(void) struct tm t; char str80; /* sample loading of tm structure */ t.tm_sec = 1; /* Seconds */ t.tm_min = 30; /* Minutes */ t.tm_hour = 9; /* Hour */ t.tm_mday = 22; /* Day of the Month */ t.tm_mon = 11; /* Month */ t.tm_year = 56; /* Year - does not include century */ t.tm_wday = 4; /* Day of the week */ t.tm_yday = 0; /* Does not show in asctime */ t.tm_isdst = 0; /* Is Daylight SavTime; does not show in asctime */ /* converts structure to null terminated string */ strcpy(str, asctime(&t); printf("%sn", str); return 0; 函数名: asin功 能: 反正弦函数用 法: double asin(double x);程序例:#include <stdio.h>#include <math.h>int main(void) double result; double x = 0.5; result = asin(x); printf("The arc sin of %lf is %lfn", x, result); return(0); 函数名: assert功 能: 测试一个条件并可能使程序终止用 法: void assert(int test);程序例:#include <assert.h>#include <stdio.h>#include <stdlib.h>struct ITEM int key; int value;/* add item to list, make sure list is not null */void additem(struct ITEM *itemptr) assert(itemptr != NULL); /* add item to list */int main(void) additem(NULL); return 0; 函数名: atan功 能: 反正切函数用 法: double atan(double x);程序例:#include <stdio.h>#include <math.h>int main(void) double result; double x = 0.5; result = atan(x); printf("The arc tangent of %lf is %lfn", x, result); return(0); 函数名: atan2功 能: 计算Y/X的反正切值用 法: double atan2(double y, double x);程序例:#include <stdio.h>#include <math.h>int main(void) double result; double x = 90.0, y = 45.0; result = atan2(y, x); printf("The arc tangent ratio of %lf is %lfn", (y / x), result); return 0; 函数名: atexit功 能: 注册终止函数用 法: int atexit(atexit_t func);程序例:#include <stdio.h>#include <stdlib.h>void exit_fn1(void) printf("Exit function #1 calledn");void exit_fn2(void) printf("Exit function #2 calledn");int main(void) /* post exit function #1 */ atexit(exit_fn1); /* post exit function #2 */ atexit(exit_fn2); return 0; 函数名: atof功 能: 把字符串转换成浮点数用 法: double atof(const char *nptr);程序例:#include <stdlib.h>#include <stdio.h>int main(void) float f; char *str = "12345.67" f = atof(str); printf("string = %s float = %fn", str, f); return 0; 函数名: atoi功 能: 把字符串转换成长整型数用 法: int atoi(const char *nptr);程序例:#include <stdlib.h>#include <stdio.h>int main(void) int n; char *str = "12345.67" n = atoi(str); printf("string = %s integer = %dn", str, n); return 0; 函数名: atol功 能: 把字符串转换成长整型数用 法: long atol(const char *nptr);程序例:#include <stdlib.h>#include <stdio.h>int main(void) long l; char *str = "" l = atol(lstr); printf("string = %s integer = %ldn", str, l); return(0);BBB.函数名: bar功 能: 画一个二维条形图用 法: void far bar(int left, int top, int right, int bottom);程序例: #include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>int main(void) /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy, i; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ midx = getmaxx() / 2; midy = getmaxy() / 2; /* loop through the fill patterns */ for (i=SOLID_FILL; i<USER_FILL; i+) /* set the fill style */ setfillstyle(i, getmaxcolor(); /* draw the bar */ bar(midx-50, midy-50, midx+50, midy+50); getch(); /* clean up */ closegraph(); return 0; 函数名: bar3d功 能: 画一个三维条形图用 法: void far bar3d(int left, int top, int right, int bottom, int depth, int topflag);程序例:#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>int main(void) /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy, i; /* initialize graphics, local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ printf("Graphics error: %sn", grapherrormsg(errorcode); printf("Press any key to halt:"); getch(); exit(1); /* terminate with error code */ midx = getmaxx() / 2; midy = getmaxy() / 2; /* loop through the fill patterns */ for (i=EMPTY_FILL; i<USER_FILL; i+) /* set the fill style */ setfillstyle(i, getmaxcolor(); /* draw the 3-d bar */ bar3d(midx-50, midy-50, midx+50, midy+50, 10, 1); getch(); /* clean up */ closegraph(); return 0; 函数名: bdos功 能: DOS系统调用用 法: int bdos(int dosfun, unsigned dosdx, unsigned dosal);程序例:#include <stdio.h>#include <dos.h>/* Get current drive as 'A', 'B', . */char current_drive(void) char curdrive; /* Get current disk as 0, 1, . */ curdrive = bdos(0x19, 0, 0); return('A' + curdrive);int main(void) printf("The current drive is %c:n", current_drive(); return 0; 函数名: bdosptr功 能: DOS系统调用用 法: int bdosptr(int dosfun, void *argument, unsigned dosal);程序例:#include <string.h>#include <stdio.h>#include <dir.h>#include <dos.h>#include <errno.h>#include <stdlib.h>#define BUFLEN 80int main(void) char bufferBUFLEN; int test; printf("Enter full pathname of a directoryn"); gets(buffer); test = bdosptr(0x3B,buffer,0); if(test) printf("DOS error message: %dn", errno); /* See errno.h for error listings */ exit (1); getcwd(buffer, BUFLEN); printf("The current directory is: %sn", buffer); return 0; 函数名: bioscom功 能: 串行I/O通信用 法: int bioscom(int cmd, char abyte, int port);程序例:#include <bios.h>#include <conio.h>#define COM1 0#define DATA_READY 0x100#define TRUE 1#define FALSE 0#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)int main(void) int in, out, status, DONE = FALSE; bioscom(0, SETTINGS, COM1); cprintf(". BIOSCOM ESC to exit .n"); while (!DONE) status = bioscom(3, 0, COM1); if (status & DATA_READY) if (out = bioscom(2, 0, COM1) & 0x7F) != 0) putch(out); if (kbhit() if (in = getch() = 'x1B') DONE = TRUE; bioscom(1, in, COM1); return 0; 函数名: biosdisk功 能: 软硬盘I/O用 法: int biosdisk(int cmd, int drive, int head, int track, int sector int nsects, void *buffer);程序例:#include <bios.h>#include <stdio.h>int main(void) int result; char buffer512; printf("Testing to see if drive a: is readyn"); result = biosdisk(4,0,0,0,0,1,buffer); result &= 0x02; (result) ? (printf("Drive A: Readyn") : (printf("Drive A: Not Readyn"); return 0; 函数名: biosequip功 能: 检查设备用 法: int biosequip(void);程序例:#include <bios.h>#include <stdio.h>int main(void) int result; char buffer512; printf("Testing to see if drive a: is readyn"); result = biosdisk(4,0,0,0,0,1,buffer); result &= 0x02; (result) ? (printf("Drive A: Readyn") : (printf("Drive A: Not Readyn"); return 0; 函数名: bioskey功 能: 直接使用BIOS服务的键盘接口用 法: int bioskey(int cmd);程序例:#include <stdio.h>#include <bios.h>#include <ctype.h>#define RIGHT 0x01#define LEFT 0x02#define CTRL 0x04#define ALT 0x08int main(void) int key, modifiers; /* function 1 returns 0 until a key is pressed */ while (bioskey(1) = 0); /* function 0 returns the key that is waiting */ key = bioskey(0); /* use function 2 to determine if shift keys were used */ modifiers = bioskey(2); if (modifiers) printf(""); if (modifiers & RIGHT) printf("RIGHT"); if (modifiers & LEFT) printf("LEFT"); if (modifiers & CTRL) printf("CTRL"); if (modifiers & ALT) printf("ALT"); printf(""); /* print out the character read */ if (isalnum(key & 0xFF) printf("'%c'n", key); else printf("%#02xn", key); return 0; 函数名: biosmemory功 能: 返回存储块大小用 法:int biosmemory(void);程序例:#include <stdio.h>#include <bios.h>int main(void) int memory_size; memory_size = biosmemory(); /* returns value up to 640K */ printf("RAM size = %dKn",memory_size); return 0; 函数名: biosprint功 能: 直接使用BIOS服务的打印机I/O用 法: int biosprint(int cmd, int byte, int port);程序例:#include <stdio.h>#include <conio.h>#include <bios.h>int main(void) #define STATUS 2 /* printer status command */ #define PORTNUM 0 /* port number for LPT1 */ int status, abyte=0; printf("Please turn off your printer. Press any key to continuen"); getch(); status = biosprint(STATUS, abyte, PORTNUM); if (status & 0x01) printf("Device time out.n"); if (status & 0x08) printf("I/O error.n"); if (status & 0x10) printf("Selected.n"); if (status & 0x20) printf("Out of paper.n"); if (status & 0x40) printf("Acknowledge.n"); if (status & 0x80) printf("Not busy.n"); return 0; 函数名: biostime功 能: 读取或设置BIOS时间用 法: long biostime(int cmd, long newtime);程序例:#include <stdio.h>#include <bios.h>#include <time.h>#include <conio.h>int main(void) long bios_time; clrscr(); cprintf("The number of clock ticks since midnight is:rn"); cprintf("The number of seconds since midnight is:rn"); cprintf("The number of minutes since midnight is:rn"); cprintf("The number of hours since midnight is:rn"); cprintf("rnPress any key to quit:"); while(!kbhit() bios_time = biostime(0, 0L); gotoxy(50, 1); cprintf("%lu", bios_time); gotoxy(50, 2); cprintf("%.4f", bios_time / CLK_TCK); gotoxy(50, 3); cprintf("%.4f", bios_time / CLK_TCK / 60); gotoxy(50, 4); cprintf("%.4f", bios_time / CLK_TCK / 3600); return 0; 函数名: brk功 能: 改变数据段空间分配用 法: int brk(void *endds);程序例:#include <stdio.h>#include <alloc.h>int main(void) char *ptr; printf("Changing allocation with brk()n"); ptr = malloc(1); printf("Before brk() call: %lu bytes freen", coreleft(); brk(ptr+1000); printf(" After brk() call: %lu bytes freen", coreleft(); return 0; 函数名: bsearch功 能: 二分法搜索用 法: void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *);程序例:#include <stdlib.h>#include <stdio.h>#define NELEMS(arr) (sizeof(arr) / sizeof(arr0)int numarray = 123, 145, 512, 627, 800, 933;int numeric (const int *p1, const int *p2) return(*p1 - *p2);int lookup(int key) int *itemptr; /* The cast of (int(*)(const void *,const void*) is needed to