标题：C语言库函数
定义
库函数：顾名思义是把函数放到库里，是别人把一些常用到的函数编完放到一个文件里，供编程人使用，编程人用的时候把它所在的文件名用#include<>加到里面就可以了（尖括号内填写文件名），例如#include<math.h>。
一般是指编译器提供的可在c源程序中调用的函数。可分为两类，一类是c语言标准规定的库函数，一类是编译器特定的库函数。 
由于版权原因，库函数的源代码一般是不可见的，但在头文件中你可以看到它对外的接口。
简介
C语言是一种非常优秀的程序设计的入门语言。它比其他大部分语言都简洁易学，所以在开始使用C语言编写真正的应用程序之前并不需要学习太多语法，这是由于C语言提供了函数库的原因。例如要直接使用C语言的语句计算sin或cos，由于C语言的语句中没有提供直接计算sin或cos函数的语句。所以会造成编写程序困难，但是函数库提供了sin和cos函数，所以编程就方便多了，又如为了显示一段文字，我们在C语言中也找不到显示语句，只能使用库函数printf。 
C语言的库函数并不是C语言本身的一部分，它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序。C的库函数极大地方便了用户，同时也补充了C语言本身的不足。事实上，在编写C语言程序时，应当尽可能多地使用库函数，这样既可以提高程序的运行效率，又可以提高编程的质量。
相关概念
函数库：函数库是由系统建立的具有一定功能的函数的集合。库中存放函数的名称和对应的目标代码，以及连接过程中所需的重定位信息。用户也可以根据自己的需要建立自己的用户函数库。库函数：存放在函数库中的函数。库函数具有明确的功能、入口调用参数和返回值。连接程序：将编译程序生成的目标文件连接在一起生成一个可执行文件。头文件：有时也称为包含文件。C语言库函数与用户程序之间进行信息通信时要使用的数据和变量，在使用某一库函数时，都要在程序中嵌入（用#include）该函数对应的头文件。
由于C语言编译系统应提供的函数库目前尚无国际标准。不同版本的C语言具有不同的库函数，用户使用时应查阅有关版本的C的库函数参考手册。
常用的库函数
函数名: 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功  能计算整数num的值。返回整数num的绝对值函数与参数类型int abs(num) 
int num;程序例#include <stdio.h> 
#include <math.h> int main(void) 
{ 
int number = -1234;   printf("number: %d  absolute value: %d\n", 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 buf[512];   printf("Insert a diskette into drive A and press any key\n"); 
getch(); 
sector = 0; 
if (absread(0, 1, sector, &buf) != 0) 
{ 
perror("Disk problem"); 
exit(1); 
} 
printf("Read OK\n"); 
strt = 3; 
for (i=0; i<80; i++) 
{ 
ch_out = buf[strt+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: %s\n", 
file_exists("NOTEXISTS.FIL") ? "YES" : "NO"); 
return 0; 
} int file_exists(char *filename) 
{ 
return (access(filename, 0) == 0); 
} 
函数名: acos功  能计算并返回arccos（x）值、要求-1<=X<=1
函数与形参类型double acos(x)
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 %lf\n", 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: %x\n", segp); 
else 
printf("Failed: maximum number of paragraphs available is %u\n", 
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: %s\n", 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 str[80];    /* 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("%s\n", str);    return 0; 
}函数名: asin功  能: 计算并返回arcsin（x）值、要求-1<=X<=1
函数与形参类型: double asin(x)    
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 %lf\n", 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功  能计算并返回arctan（x）的值函数与形参类型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 %lf\n", x, result); 
return(0); 
}函数名: atan2功  能计算并返回arctan（x/y）值函数与形参类型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 %lf\n", (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 called\n"); 
} void exit_fn2(void) 
{ 
printf("Exit function #2 called\n"); 
} int main(void) 
{ 
/* post exit function #1 */ 
atexit(exit_fn1); 
/* post exit function #2 */ 
atexit(exit_fn2); 
return 0; 
}函数名: atof功  能把str指向的ASCⅡ字符串转换成一个double型整数返回双精度的结果函数与形参类型double atof(str)
char*str;程序例#include <stdlib.h> 
#include <stdio.h> int main(void) 
{ 
float f; 
char *str = "12345.67";    f = atof(str); 
printf("string = %s float = %f\n", str, f); 
return 0; 
}函数名: atoi功  能把str指向的ASCⅡz字符串转换成一个整数。返回整数结果函数与参数类型double atoi（str )
char *str;程序例#include <stdlib.h> 
#include <stdio.h> int main(void) 
{ 
int n; 
char *str = "12345.67";    n = atoi(str); 
printf("string = %s integer = %d\n", str, n); 
return 0; 
}函数名: atol功  能把字符串转换成长整型数 。返回长整数结果函数与参数类型long atol(str )
char *str;程序例#include <stdlib.h> 
#include <stdio.h> int main(void) 
{ 
long l; 
char *str = "98765432";    l = atol(lstr); 
printf("string = %s integer = %ld\n", str, l); 
return(0); 
}函数名: mkdir功  能建立一个目录用  法int mkdir(char *pathname);程序例#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <dir.h>
int main(void)
{
int status;
clrscr();
status = mkdir("asdfjklm");
(!status) ? (printf("Directory created\n")) :
(printf("Unable to create directory\n"));
getch();
system("dir");
getch();
status = rmdir("asdfjklm");
(!status) ? (printf("Directory deleted\n")) :
(perror("Unable to delete directory"));
return 0;
}函数名: mktemp功  能建立唯一的文件名用  法char *mktemp(char *template);程序例#include <dir.h>
#include <stdio.h>
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);程序例#include <dos.h>
#include <graphics.h>
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[i] = 0x0700 + ('a' + i);
return 0;
}函数名: modf功  能把数分为指数和尾数用  法double modf(double value, double *iptr);程序例#include <math.h>
#include <stdio.h>
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);
程序例 #include <mem.h>
#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);程序例#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
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);程序例#include <conio.h>
#include <string.h>
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);程序例#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
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);程序例#include <mem.h>
#include <alloc.h>
#include <stdio.h>
#include <string.h>
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);程序例#include <conio.h>
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();
}