C语言库函式

生活百科 2023-01-25 18:02生活百科www.aizhengw.cn

C语言库函式

C语言库函式是把自定义函式放到库里,是别人把一些常用到的函式编完放到一个档案里,供程式设计师使用。程式设计师用的时候把它所在的档案名称用#include<>加到里面就可以了(尖括弧内填写档案名称),例如#include<math.h>。

基本介绍

  • 中文名C语言库函式

定义

一般是指编译器提供的可在c源程式中调用的函式。可分为两类,一类是c语言标準规定的库函式,一类是编译器特定的库函式。
由于着作权原因,库函式的原始码一般是不可见的,但在头档案中你可以看到它对外的接口。

内容介绍

C语言是一种程式设计的入门语言。由于C语言的语句中没有提供直接计算sin或cos函式的语句,会造成编写程式困难;函式馆提供了sin和cos函式,可以拿来直接调用。显示一段文字,我们在C语言中找不到显示语句,只能使用库函式printf。
C语言的库函式并不是C语言本身的一部分,它是由编译程式根据一般用户的需要,编制并提供用户使用的一组程式。C的库函式极大地方便了用户,也补充了C语言本身的不足。在编写C语言程式时,使用库函式,既可以提高程式的运行效率,又可以提高编程的质量。

相关概念

函式馆

函式馆是由系统建立的具有一定功能的函式的集合。库中存放函式的名称和对应的目标代码,以及连线过程中所需的重定位信息。用户也可以根据自己的需要建立自己的用户函式馆。

库函式

存放在函式馆中的函式。库函式具有明确的功能、入口调用参数和返回值。

连线程式

将编译程式生成的目标档案连线在一起生成一个执行档。

头档案

有时也称为包含档案。C语言库函式与用户程式之间进行信息通信时要使用的数据和变数,在使用某一库函式时,都要在程式中嵌入(用#include)该函式对应的头档案,用户使用时应查阅有关版本的C的库函式参考手册。

常用的库函式

abort

函式名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

函式名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

函式名: 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

函式名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

函式名 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

函式名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

函式名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

函式名 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

函式名: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

函式名 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

函式名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

函式名 atan2
功 能计算并返回arctan(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 %lf\n", (y / x), result);
return 0;
}

atexit

函式名 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

函式名 atof
功 能把str指向的ASCⅡ字元串转换成一个double型整数返回双精度的结果
函式与形参类型
double atof(str)
charstr;
程式例
#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

函式名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

函式名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

函式名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

函式名 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

函式名 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

函式名 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

函式名 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, 80252);
}
int main(void)
{
char buf[80252];
save_mono_screen(buf);
}

moverel

函式名 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

函式名 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

函式名 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

函式名 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

函式名 normvideo
功 能选择正常亮度字元
用 法
void normvideo(void);
程式例
#include <conio.h>
int main(void)
{
normvideo();
cprintf("NORMAL Intensity Text\r\n");
return 0;
}

nosound

函式名 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();
}

Copyright@2015-2025 www.aizhengw.cn 癌症网版板所有