1、注意:只能作为 C函数参考,其中很多错误,一些是非标准函数。!A函数名: abort功 能: 异常终止一个进程用 法: void abort(void);程序例:#include #include int main(void)printf(“Calling abort()n“);abort();return 0; /* This is never reached */函数名: abs功 能: 求整数的绝对值用 法: int abs(int i);程序例:#include #include int main(void)int number = -1234;printf(“number: %d a
2、bsolute 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 #include #include #include int main(void)int i, st
3、rt, ch_out, sector;char buf512;printf(“Insert a diskette into drive A and press any keyn“);getch();sector = 0;if (absread(0, 1, sector, exit(1);printf(“Read OKn“);strt = 3;for (i=0; i#include int file_exists(char *filename);int main(void)printf(“Does NOTEXIST.FIL exist: %sn“, file_exists(“NOTEXISTS.
4、FIL“) ? “YES“ : “NO“);return 0;int file_exists(char *filename)return (access(filename, 0) = 0);函数名: acos功 能: 反余弦函数用 法: double acos(double x);程序例:#include #include 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功 能:
5、 分配 DOS存储段用 法: int allocmem(unsigned size, unsigned *seg);程序例:#include #include #include int main(void)unsigned int size, segp;int stat;size = 64; /* (64 x 16) = 1024 bytes */stat = allocmem(size, if (stat = -1)printf(“Allocated memory at segment: %xn“, segp);elseprintf(“Failed: maximum number of pa
6、ragraphs available is %un“, stat);return 0;函数名: arc功 能: 画一弧线用 法: void far arc(int x, int y, int stangle, int endangle, int radius);程序例:#include #include #include #include int main(void)/* request auto detection */int gdriver = DETECT, gmode, errorcode;int midx, midy;int stangle = 45, endangle = 135;
7、int radius = 100;/* initialize graphics and local variables */initgraph(/* 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 wit
8、h 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 #include #include int main(
9、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.t
10、m_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(printf(“%sn“, str);return 0;函数名: asin功 能: 反正弦函数用 法: double asin(double x);程序例:#include #include int main(void)double resul
11、t;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 #include #include struct ITEM int key;int value;/* add item to list, make sure list is not null */void additem(struct ITEM *itemptr) asser
12、t(itemptr != NULL);/* add item to list */int main(void)additem(NULL);return 0;函数名: atan功 能: 反正切函数用 法: double atan(double x);程序例:#include #include 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的反正切值用 法: d
13、ouble atan2(double y, double x);程序例:#include #include 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 #include void exit_fn1(void)prin
14、tf(“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 #include int main(void)float f;c
15、har *str = “12345.67“;f = atof(str);printf(“string = %s float = %fn“, str, f);return 0;函数名: atoi功 能: 把字符串转换成长整型数用 法: int atoi(const char *nptr);程序例:#include #include int main(void)int n;char *str = “1234“;n = atof(str);printf(“string = %s float = %dn“, str, n);return 0; 函数名: bar功 能: 画一个二维条形图用 法: voi
16、d far bar(int left, int top, int right, int bottom);程序例:#include #include #include #include int main(void)/* request auto detection */int gdriver = DETECT, gmode, errorcode;int midx, midy, i;/* initialize graphics and local variables */initgraph(/* read result of initialization */errorcode = graphre
17、sult();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#include #
18、include #include int main(void)/* request auto detection */int gdriver = DETECT, gmode, errorcode;int midx, midy, i;/* initialize graphics, local variables */initgraph(/* read result of initialization */errorcode = graphresult();if (errorcode != grOk) /* an error occurred */printf(“Graphics error: %
19、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#include /* Get current drive as A, B, . */char current_drive(void)char curdrive;/* Get cur
20、rent 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 #include #include #include #include #include #define B
21、UFLEN 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
22、);return 0;函数名: bioscom功 能: 串行 I/O通信用 法: int bioscom(int cmd, char abyte, int port);程序例:#include #include #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
23、(“. BIOSCOM ESC to exit .n“);while (!DONE)status = bioscom(3, 0, COM1);if (status if (kbhit()if (in = getch() = x1B) /如果是 esc键DONE = TRUE;bioscom(1, in, COM1);return 0;函数名: biosdisk功 能: 软硬盘 I/O用 法: int biosdisk(int cmd, int drive, int head, int track,int sectorint nsects, void *buffer);程序例:#include
24、#include 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 (result) ? (printf(“Drive A: Readyn“) : (printf(“Drive A: Not Readyn“);return 0;函数名: biosequip功 能: 检查设备用 法: int biosequip(void);程序例:#include #include int main(
25、void)int result;char buffer512;printf(“Testing to see if drive a: is readyn“);result = biosdisk(4,0,0,0,0,1,buffer);result (result) ? (printf(“Drive A: Readyn“) : (printf(“Drive A: Not Readyn“);return 0;函数名: bioskey功 能: 直接使用 BIOS服务的键盘接口用 法: int bioskey(int cmd);程序例:#include #include #include #define
26、 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 =
27、bioskey(2);if (modifiers)printf(“);if (modifiers if (modifiers if (modifiers if (modifiers printf(“);/* print out the character read */if (isalnum(key elseprintf(“%#02xn“, key);return 0;函数名: biosmemory功 能: 返回存储块大小用 法:int biosmemory(void);程序例:#include #include int main(void)int memory_size;memory_siz
28、e = 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 #include #include int main(void)#define STATUS 2 /* printer status command */#define PORTNUM 0 /* port num
29、ber 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 if (status if (status if (status if (status if (status return 0;函数名: biostime功 能: 读取或设置 BIOS时间用 法: long biostime(int cmd, long newtime);
30、程序例:#include #include #include #include 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“);cpri
31、ntf(“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功 能:
32、 改变数据段空间分配用 法: int brk(void *endds);程序例:#include #include 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功 能: 二分法搜索用 法
33、: void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *);程序例:#include #include #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(in
34、t key)int *itemptr;/* The cast of (int(*)(const void *,const void*) is needed to avoid a type mismatch error at compile time */itemptr = bsearch (return (itemptr != NULL);int main(void)if (lookup(512)printf(“512 is in the table.n“);elseprintf(“512 isnt in the table.n“);return 0;C函数名: cabs功 能: 计算复数的绝
35、对值用 法: double cabs(struct complex z);程序例:#include #include int main(void)struct complex z;double val;z.x = 2.0;z.y = 1.0;val = cabs(z);printf(“The absolute value of %.2lfi %.2lfj is %.2lf“, z.x, z.y, val);return 0;函数名: calloc功 能: 分配主存储器用 法: void *calloc(size_t nelem, size_t elsize);程序例:#include #inc
36、lude int main(void)char *str = NULL;/* allocate memory for string */str = calloc(10, sizeof(char);/* copy “Hello“ into string */strcpy(str, “Hello“);23/* display string */printf(“String is %sn“, str);/* free memory */free(str);return 0;函数名: ceil功 能: 向上舍入用 法: double ceil(double x);程序例:#include #inclu
37、de int main(void)double number = 123.54;double down, up;down = floor(number);up = ceil(number);printf(“original number %5.2lfn“, number);printf(“number rounded down %5.2lfn“, down);printf(“number rounded up %5.2lfn“, up);return 0;函数名: cgets功 能: 从控制台读字符串用 法: char *cgets(char *str);24程序例:#include #inc
38、lude int main(void)char buffer83;char *p;/* Theres space for 80 characters plus the NULL terminator */buffer0 = 81;printf(“Input some chars:“);p = cgets(buffer);printf(“ncgets read %d characters: “%s“n“, buffer1, p);printf(“The returned pointer is %p, buffer0 is at %pn“, p, /* Leave room for 5 chara
39、cters plus the NULL terminator */buffer0 = 6;printf(“Input some chars:“);p = cgets(buffer);printf(“ncgets read %d characters: “%s“n“, buffer1, p);printf(“The returned pointer is %p, buffer0 is at %pn“, p, return 0;函数名: chdir功 能: 改变工作目录用 法: int chdir(const char *path);程序例:#include #include #include c
40、har old_dirMAXDIR;char new_dirMAXDIR;int main(void)if (getcurdir(0, old_dir) perror(“getcurdir()“);exit(1);printf(“Current directory is: %sn“, old_dir);if (chdir(“)perror(“chdir()“);exit(1);if (getcurdir(0, new_dir)perror(“getcurdir()“);exit(1);printf(“Current directory is now: %sn“, new_dir);printf
41、(“nChanging back to orignal directory: %sn“, old_dir);if (chdir(old_dir)perror(“chdir()“);exit(1);return 0;函数名: _chmod, chmod功 能: 改变文件的访问方式用 法: int chmod(const char *filename, int permiss);程序例:#include #include #include void make_read_only(char *filename);int main(void)make_read_only(“NOTEXIST.FIL“)
42、;make_read_only(“MYFILE.FIL“);return 0;void make_read_only(char *filename)int stat;stat = chmod(filename, S_IREAD);if (stat)printf(“Couldnt make %s read-onlyn“, filename);elseprintf(“Made %s read-onlyn“, filename);函数名: chsize功 能: 改变文件大小用 法: int chsize(int handle, long size);程序例:#include #include #in
43、clude int main(void)int handle;char buf11 = “0123456789“;/* create text file containing 10 bytes */handle = open(“DUMMY.FIL“, O_CREAT);write(handle, buf, strlen(buf);/* truncate the file to 5 bytes in size */chsize(handle, 5);/* close the file */close(handle);return 0;函数名: circle功 能: 在给定半径以(x, y)为圆心
44、画圆用 法: void far circle(int x, int y, int radius);程序例:#include #include #include #include int main(void)/* request auto detection */int gdriver = DETECT, gmode, errorcode;int midx, midy;int radius = 100;/* initialize graphics and local variables */initgraph(/* read result of initialization */errorcod
45、e = 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;setcolor(getmaxcolor();/* draw the circle */circle(midx
46、, midy, radius);/* clean up */getch();closegraph();return 0;函数名: cleardevice功 能: 清除图形屏幕用 法: void far cleardevice(void);程序例:#include #include #include #include int main(void)/* request auto detection */int gdriver = DETECT, gmode, errorcode;int midx, midy;/* initialize graphics and local variables */
47、initgraph(/* 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;se
48、tcolor(getmaxcolor();/* for centering screen messages */settextjustify(CENTER_TEXT, CENTER_TEXT);/* output a message to the screen */outtextxy(midx, midy, “press any key to clear thescreen:“);/* wait for a key */getch();/* clear the screen */cleardevice();/* output another message */outtextxy(midx, midy, “press any key to quit:“);/* clean up */getch();closegraph();return 0;函数名: clearerr30功 能: 复位错误标志用 法:void clearerr(FILE *stream);程序例:#include int main(void)FILE *fp;char ch;/* open a file for writing */fp = fopen(“DUMMY.FIL“, “w“);/* force an error condition by attempting to read */ch = fgetc(