C语言 标准库函数

实际上库函数并不是C语言的一部分,它是由人们根据需要编制并提供用户使用的。每一种C编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSI C标准提出了一批建议提供的标准库函数,它包括了目前多数C编译系统所提供的库函数,但也有一些是某些C编译系统未曾实现的。考虑到通用性,本篇博文主要列出ANSI C标准建议提供的、常用的部分库函数。对多数C编译系统,可以使用这些函数的绝大部分。由于C库函数的种类和数目很多(例如,还有屏幕和图形函数、时间日期函数、与系统有关的函数等,每一类函数又包括各种功能的函数),限于篇幅,就不全部介绍了,只列出最基本的库函数。一般情况下够用啦~~

1、数学函数
调用数学函数时,要求在源文件中包含头文件,即使用以下命令行:
#include 或include “math.h”

函数名

函数原型说明

功能

返回值

说明

abs

Int abs (int x);

求整数x的绝对值。

计算结果

 

acos

double acos (double x);

计算cos-1(x)的值。

计算结果

x在-1 ~ 1范围内

asin

double asin (double x);

计算sin-1(x)的值。

计算结果

x在-1 ~ 1范围内

atan

double atan (double x);

计算tan-1(x)的值。

计算结果

 

atan2

double atan2 (double x);

计算tan-1(x/y)的值。

计算结果

 

cos

double cos (double x);

计算cos (x)的值。

计算结果

x的单位为弧度

cosh

double cosh (double x);

计算双曲余弦cosh(x)的值。

计算结果

 

exp

double exp (double x);

计算ex的值。

计算结果

 

fabs

double fabs(double x);

求x的绝对值。

计算结果

 

floor

double floor (double x);

求不大于x最大整数。

该整数的双精度数。

 

fmod

Double fmod (double x,double y);

求整除x/y的余数。

 余数的双精度数。

 

frexp

Double frexp (double val,int*eptr);

把双精度数val分解尾数x和以2为底的指数n,即val=x*2n,n存放在eptr所指向的变量中。

返回尾数x

0.5≤x<1

 

log

double log (double x);

求logex,即ln x。

计算结果

 

log10

double log10 (double x);

求log10x。

计算结果

 

modf

double modf (double val,double *iptr);

把双精度数val分解成整数部分和小数部分,整数部分存放在iptr所指的单元。

Val的小数部分

 

pow

Double pow (double x,double y);

计算xy的值。

计算结果

 

rand

Int rand(void)

产生-90~32767间的随机整数

随机整数

 

sin

double sin (double x);

计算sin (x)的值。

计算结果

x的单位为弧度

sinh

double sinh (double x);

计算x的双曲正弦函数sinh(x)的值。

计算结果

 

sqrt

double sqrt (double x);

计算x的平方根。

计算结果

 x≥0

tan

double tan (double x);

计算tan (x)的值。

计算结果

x的单位为弧度

tanh

double tanh

计算x的双曲正切函数tanh(x)的值

计算结果

 


2、字符函数和字符串函数
ANSI C标准要求在使用字符串函数时要包含头文件string.h,在使用字符函数时要包含头文件"ctype.h"。有的C编译不遵循ANSI C标准的规定而用其他名称的头文件。具体查有相关资料。

函数名

函数原型说明

功能

返回值

包含文件

isalnum

int isalnum(int ch);

检查ch是否为字母或数字

是,返回1;否则返回0

ctype.h

isalpha

int isalpha(int ch);

检查ch是否为字母

是,返回1;否则返回0

ctype.h

iscntrl

int iscntrl(int ch);

检查ch是否为控制字符

是,返回1;否则返回0

ctype.h

isdigit

int isdigit(int ch);

检查ch是否为数字

是,返回1;否则返回0

ctype.h

isgraph

int isgraph(int ch);

检查ch是否为(ASCII码值在ox21到ox7e)的可打印字符(即不包含空格字符)

是,返回1;否则返回0

ctype.h

islower

int islower(int ch);

检查ch是否为小写字母

是,返回1;否则返回0

ctype.h

isprint

int isprint(int ch);

检查ch是否为字母或数字

是,返回1;否则返回0

ctype.h

ispunct

int ispunct(int ch);

检查ch是否为标点字符(包括空格),即除字母、数字和空格以外的所有可打印字符。

是,返回1;否则返回0

ctype.h

isspace

int isspace(int ch);

检查ch是否为空格、制表或换行字符

是,返回1;否则返回0

ctype.h

isupper

int isupper(int ch);

检查ch是否为大写字母

是,返回1;否则返回0

ctype.h

isxdigit

int isxdigit(int ch);

检查ch是否为16进制数字

是,返回1;否则返回0

ctype.h

strcat

char *strcat(char *s1,char *s2);

把字符串s2接到s1后面

s1所指地址

string.h

strchr

char *strchr(char *s,int ch);

在s把指字符串中,找出第一次出现字符ch的位置

返回找到的字符的地址,找不到返回NULL

string.h

strcmp

char *strcmp(char *s1,char *s2);

对s1和s2所指字符串进行比较

s1s2,返回正数。

string.h

strcpy

char *strcpy(char *s1,char *s2);

把s2指向的串复制到s1指向的空间

s1所指地址

string.h

strlen

unsigned strlen(char *s);

求字符串s的长度

返回串中字符(不计最后的‘\0’)个数

string.h

strstr

char *strstr(char *s1,char *s2);

在s1所指字符串中,找到字符串s2第一次出现的位置

返回找到的字符串的地址,找不到返回NULL

string.h

tolower

int tolower(int ch);

把ch中的字母转换成小写字母

返回对应的小写字母

ctype.h

toupper

int toupper(int ch);

把ch中的字母转换成大写字母

返回对应的大写字母


3、输入输出函数
凡用以下的输入输出函数,应该使用#include把stdio.h头文件包含到源程序文件中。

函数名

函数原型说明

功能

返回值

说明

clearerr

void clearer(FILE * fp);

清除与文件指针fp有关的所有出错信息。

无。

 

close

int close(int fp);

关闭文件。

关闭成功返回0,不成功返回-1

ANSI标准函数。

creat

int creat (char * filename,int mode);

mode所指定的方式建立文件。

成功则返回正数,否则返回-1

ANSI标准函数。

eof

Inteof (int fd);

检查文件是否结束。

遇文件结束,返回1;否则返回0

ANSI标准函数。

fclose

int fclose(FILE * fp);

关闭fp所指的文件,释放文件缓冲区

出错返回非0,否则返回0。

 

feof

int feof(FILE * fp);

检查文件是否结束

遇文件结束返回非0,否则返回0。

 

fgetc

int fgetc(FILE * fp);

从fp所指的文件中取得下一个字符

出错返回EOF,否则返回所读字符。

 

fgets

char * fgets(char * buf, int n, file * fp);

从fp所指的文件中读取一个长度为n - 1的字符串,将其存入buf所指存储区

返回buf所指地址,若遇文件结束或出错返回NULL。

 

fopen

FILE * fopen(char * filename, char * mode);

以mode指定的方式打开名为filename的文件

成功,返回文件指针(文件信息区的起始地址),否则返回NULL。

 

fprintf

int fprintf(FILE * fp,char * format,args,…);

把arg,…的值以format指定的格式输出到fp所指定的文件中

实际输出的字符数。

 

fputc

int fputc(char ch,FILE * fp);

把ch中字符输出到fp所指文件

成功返回该字符,否则返回EOF。

 

fputs

int fputs(char * str,FILE * fp);

把str所指字符串输出到fp所指文件

成功返回非0,否则返回0。

 

fread

int fread(char * pt,unsigned size,unsigned n,FILE * fp);

从fg所指文件中读取长度为size的n个数据项存到pt所指文件中

读取的数据项个数。

 

fscanf

int fscanf(FILE * fp,char * format,args,…);

从fg所指定的文件中按format指定的格式把输入数据存入到args,…所指的内存中

已输入的数据个数,遇文件的结束或出错返回0。

 

fseek

int fseek(FILE * fp,long offer,int base);

移动fp所指文件的位置指针

成功返回当前位置,否则返回-1。

 

ftell

int ftell(FILE * fp);

求出fp所指文件当前的读写位置

读写位置。

 

fwrite

int fwrite(char * pt,unsigned size,unsigned n,FILE * fp);

把pt所指向的n * size个字节输出到fp所指文件中

输出的数据项个数。

 

getc

int getc(FILE * fp);

从fp所指文件中读取一个字符

返回所读字符,若出错或文件结束返回EOF。

 

getchar

int getchar(void);

从标准输入设备读取下一个字符。

返回所读字符,若出错或文件结束返回-1。

 

getw

int getw (FILE * fp);

从fp所指向的文件读取下一个字(整数)。

ANSI标准函数。

open

Int open (char * filename,int mode);

mode指出的方式打开已存在的名为filename的文件。

返回文件号(正数)。如打开失败,返回-1

ANSI标准函数。

printf

int printf (char * format,args,…);

按format指向的格式字符串所规定的格式,将输出表列args的值输出到标准输出设备。

输出字符个数。若出错,返回负值。

format可以是一个字符串,或字符数组的起始地址。

putc

int putc(int ch,FILE * fp);

同fputc

同fputc

 

putcahr

int putcahr(char ch);

把ch输出到标准输出设备

返回输出的字符,若出错,返回EOF。

 

puts

int puts(char * str);

把str所指字符串输出到标准设备,将‘\0’转换成回车换行符

返回换行符,若出错,返回EOF。

 

putw

int putw (int w,FILE * fp);

将一个整数w(即一个字)写到fp指向的文件中。

返回输出的整数;若出错,返回EOF

ANSI标准函数。

read

int read (int fp,char * buf,unsigned count);

从文件号fp所指示的文件中读count个字节到由buf指示的缓冲区中。

返回真正读入的字节个数。如遇文件结束返回0,出错返回-1

ANSI标准函数。

rename

int rename(char * oldname,char * newname);

把oldname所指文件名改为newname所指文件名。

成功返回0,出错返回-1。

 

rewind

void rewind(FILE * fg);

fp指示的文件位置指针置于文件开头,并清除文件结束标志和错误标志。

无。

 

scanf

int scanf (char * format,args,…);

从标准输入设备按format指定的格式把输入数据存入到args,…所指的内存中。

读入并赋给args的数据个数。遇文件结束返回EOF,出错返回0。

args为指针。

write

int write (int fd, char * buf,unsigned count);

buf指示的缓冲区输出count个字符到fd所标志的文件中。

返回实际输出的字节数。如出错返回-1

ANSI标准函数。


4、动态分配函数和随机函数
ANSI标准建议设4个有关的动态存储分配的函数,即calloc()、malloc()、free()、realloc()。实际上,许多C编译系统实现时,往往增加了一些其他函数。ANSI标准建议在"stdlib.h"头文件中包含有关的信息,但许多C编译系统要求用"malloc.h"而不是"stdlib.h"。
ANSI标准要求动态分配系统返回void指针。void指针具有一般性,它们可以指向任何类型的数据,但目前有的C编译所提供的这类函数返回char指针。无论以上两种情况的哪一种,都需要用强制类型转换的方法把void或char指针转换成所需的类型。

函数名

函数原型说明

功能

返回值

calloc

void * calloc(unsigned n,unsigned size);

分配n个数据项的内存空间,每个数据项的大小为size个字节。

分配内存单元的起始地址;如不成功,返回0。

free

void free(void p);

释放p所指的内存区。

malloc

void * malloc(unsigned size);

分配size个字节的存储空间。

分配内存空间的地址;如不成功返回0。

realloc

void * realloc(void * p,unsigned size);

把p所指内存区的大小改为size个字节。

新分配内存空间的地址;如不成功返回0。

rand

int rand(void);

产生0到32767随机数。

返回一个随机整数。



你可能感兴趣的:(编程语言)