常用ANSI C标准库函数

数学函数

应包含头文件<math.h>

函数名 函数原型 功能 说明
abs int abs(int x) 计算并返回整数x的绝对值
acos double acos(double x) 计算并返回arccos(x)的值 要求x在-1~1之间
asin double asin(double x) 计算并返回arcsin(x)的值 要求x在-1~1之间
atan double atan(double x) 计算并返回arctan(x)的值
atan2 double atan2(double x,double y) 计算并返回arctan(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的绝对值 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=x2n,n存放在eptr指向的变量中 返回尾数x,x在0.5~1.0之间
labs long labs(long x) 计算并返回长整数x的绝对值
log double log(double x) 计算并返回自然对数ln(x)的值 x>0
log10 double log10(double x) 计算并返回常用对数log10(x)的值 x>0
modf double modf(double val,int *iptr) 把双精度数val分解成数字部分和小数部分,小数部分返回,把整数部分存放在iptr指向的双精度型变量中
pow double pow(double x,double y) 计算并返回xy的值
pow10 double pow10(int x) 计算并返回10x的值
sin double sin(double x) 计算并返回正弦函数sin(x)的值 x的单位是弧度
sinh double sinh(double x) 计算并返回双曲正弦函数sinh(x)的值
sqrt double sqrt(double x) 计算并返回x的平方根 x>=0
tan double tan(double x) 计算并返回正切函tan(x)的值 x的单位是弧度
tanh double tanh(double x) 计算并返回双曲正切函数tanh(x)的值

字符判别与转换函数

应包含头文件<ctype.h>

函数名 函数原型 功能 说明
isalnum int isalnum(int ch) 检查ch是否是字母或数字 是字母或数字返回1,否则返回0
isalpha int isalpha(int ch) 检查ch是否是字母 是字母返回1,否则返回0
isascii int isascii (int ch) 检查ch是否是ASCII字符 是返回1,否则返回0
iscntrl int iscntrl (int ch) 检查ch是否控制字符(其ASCII码在0和0xlF之间) 是控制字符返回1,否则返回0
isdigit int isdigit (int ch) 检查ch是否是数字
isgraph int isgraph (int ch) 检查ch是否是可打印字符,不包括空格和控制字符 是可输出字符返回1,否则返回0
islower int islower(int ch) 检查ch是否是小写字母 是小写字母 1,否则返回0
isprint int isprint (int ch) 检查ch是否是可打印字符,包括空格
ispunct int ispunct (int ch) 检查ch是否是标点字符(不包括空格),即除字母、数字和空格以外的所有可输出字符 是标点返回1,否则返回0
isspace int isspace (int ch) 检查ch是否是空格、水平制表符(‘\t’)、回车符(‘\n’)、走纸换行(‘\f’)、垂直制表符(‘\v’)或换行符(‘\n’) 是返回1,否则返回0
isupper int isupper(int ch) 检查ch是否是大写字母 是大写字母返回1,否则返回0
isxdigit int isxdigit (int ch) 检查ch是否是一个十六进制数字 是返回1,否则返回
tolower int tolower (int ch) 将ch字符转换为小写字母 返回ch对应的小写字母
toupper int toupper (int ch) 将ch字符转换为大写字母 返回ch对应的大写字母

字符串处理函数

应包含头文件<string.h>

函数名 函数原型 功能 说明
memset void *memset (void *buf, char ch, unsigned count) 将字符ch复制到buf指向的数组前count个字符中 返回buf
memcpy void *memcpy (void *dest, const void *src, size_t n) 从src所指的内存地址拷贝n个字符到dest所指的内存地址。和strncpy不同,memcpy并不是遇到’\0’就结束,而是一定会拷贝完n个字节 返回dest
memmove void *memmove (void *dest, const void *src, size_t n) 从src所指的内存地址拷贝n个字符到dest所指的内存地址,和memcpy有一点不同,memcpy的两个参数src和dest所指的内存区间如果重叠则无法保证正确拷贝,而memmove却可以正确拷贝 返回dest
strcat char *strcat (char *str1, const char *str2) 把字符串str2接到sht1后面,取消原来str1最后面的串结束符“\0” 返回str1
strchr char *strchr (char *str, int ch) 找出str指向的字符串中第一次出现字符ch的位置 返回指向该位置的指针,如找不到,则返回0
strcmp char *strcmp (const char *str1, const char *str2) 比较字符串str1和str2 若str1 < str2,返回-1 str1=str2 返回0 str1 > str2,返回1
strcpy char *strcpy (char *str1, const char *str2) 把str2指向的字符串复制到str1中去 返回str1
strlen int strlen(const char *str) 统计字符串str中字符的个数(不包括结束符“\0”) 返回字符个数
strlwr char *strlwr(char *str) 将串str中的字母转为小写字母 返回str
strncat char *strncat (char *str1, const char *str2, unsigned count) 把字符串str2指向的字符串中最多count个字符连到串str1后面,并以’\0’结尾 返回str1
strncpy char *strncpy (char *str1, const char *str2, unsigned count) 把字符串str2指向的字符串中前count个字符复制到串str1中去 返回str1
strstr char *strstr (const char *str1, const char *str2) 寻找str2指向的字符串在str1指向的字符串中首次出现的位置 返回str2指向的字符串啊首次出现的地址,否则返回0
strupr char *strupr(char *str) 将串str中的字母转换为大写字母 返回str

内存管理函数

应包含头文件<stdlib.h>,也有编译系统包含<malloc.h>

函数名 函数原型 功能 说明
calloc void *calloc(unsigned num,unsigned size) 分配num个数据项的内存连续空间,每个数据项的大小为size 返回分配内存单元的起始地址,如不成功,返回0,动态空间中初始值自动为0
free void free (void *ptr) 释放ptr所指内存区
malloc void *malloc (unsigned size) 分配size字节的内存区 返回所分配的内存区地址,如内存不够,返回0
realloc void *realloc (void *ptr,unsigned newsize) 将ptr所指的已分配的内存区的大小改为newsize,size可以比原来分配的空间大或小 返回指向该内存区的指针,若重新分配失败,返回0

类型转换函数

应包含头文件<stdlib.h>

函数名 函数原型 功能 说明
atof double atof (char *str) 将str指向的字符串转换为一个double型的值 返回双精度计算结果
atoi int atoi (char *str) 将str指向的字符串转换为一个int型的值 返回转换结果
atol long atol (char *str) 将str指向的字符串转换为一个long型的值 返回转换结果
ecvt char *ecvt (double value, int ndigit, int *decpt, int *sign) 将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点 返回字符串值
fcvt char *fcvt (double value, int ndigit, int *decpt, int *sign) 以指定位数为转换精度,余同ecvt() 返回字符串值
gcvt char *gcvt (double value, int ndigit, int *buf) 将双精度浮点型值转换为字符串,转换结果中包含十进制小数点 返回字符串值
itoa char *itoa (int value,char *str,int radix ) 将整数value的值按照radix进制转换为等价的字符串,并将结果存入str指向的字符串 返回一个指向str的字符串
strtod double strtod(char *str, char **endptr) 讲一个字符串转换为double值 返回double型的浮点数
strtol long strtol(char *str, char **endptr, int base) 将一个字符串转换为长整数 长整数值
ultoa char *ultoa(unsigned long value, char *string, int radix) 将一个无符号长整数转换为字符串 返回字符串值

输入输出函数

应包含头文件<stdio.h>

函数名 函数原型 功能 说明
clearerr void clearerr (FILE *fp) 复位错误标志
fclose int fclose(FILE *fp) 关闭文件指针fp所指向的文件,释放缓冲区 成功返回0,出错返回EOF并设置errno
feof int feof(FILE *fp) 检查文件是否结束 遇文件结束符返回非0值,否则返回0
ferror int ferror(FILE *fp 检查fp指向的文件中的错误 无措时返回0,有错时返回非0值
fflush int fflush(FILE *fp) 如果fp所指向的文件是“写打开”,则将输出缓冲区的内容物理地写入文件;若文件是“读打开”的,则清除输入缓冲区中的内容 成功返回0,出现写错误时,返回EOF
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(const char *filename, const char *mode) 以mode指定的方式打开名为filename的文件 成功则返回一个文件指针,否则返回NULL
fprintf int fprintf(FILE *fp, char *format[,argument,...] 将argument的值以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(void *ptr, unsigned size, unsigned n, FILE *fp) 从fp所指向的文件中中读取长度为size的n个数据项,存到ptr所指向的内存区中 返回所读的数据项个数,若遇到文件结束或出错,返回0
fscanf int fscanf(FILE *fp, char *format[,argument,...]) 从fp所指向的文件中的按format指定的格式将输入数据送到argument所指向的内存单元 已输入的数据个数
fseek int fseek(FILE *stream, long offset, int base) 将fp所指向的文件位置指针移到以base所指出的位置为基准,以offset为位移量的位置 返回当前位置,否则返回-1
ftell long ftell(FILE *fp) 返回fp所指向的文件中的读写位置 返回fp所指向的文件中的读写位置
fwrite int fwrite(const void *ptr, unsigned size, unsigned n, FILE *fp) 将ptr所指向的n*size字节输出到fp所指向的文件中 返回写到fp所指向的文件中的数据项的个数
getc int getc(FILE *stream) 从fp所指向的文件中读入一个字符 返回所读字符,若文件结束或出错,返回EOF
getchar int getchar(void) 从标准输入设备读取下一个字符 返回所读字符,若文件结束或出错,返回-1
gets char *gets(char *str); 从标准输入设备读入字符串,放到str所指定的字符数组中,一直读到接收换行符或EOF时为止,换行符不作为输入串的内容,变成’\0’后作为该字符串的结束
perror void perror(const char *str) 向标准错误输出字符串str,并随后附上冒号以及全局变量errno代表的错误消息的文字说明
printf int printf(const char *format[,argument,...]) 将输出列表argument的输出到标准输出设备 输出字符的个数,若出错,则返回负数
putc int putc(char ch, FILE *fp) 将一个字符ch输出到fp指向的文件中 返回输出的字符ch;若出错,返回EOF
putchar int putchar(char ch) 将一个字符ch输出到标准输出设备 返回输出的字符ch;若出错,返回EOF
puts int puts(const char *string) 将str指向的字符串输出到标准输出设备,将’\0’转换为回车换行 返回换行符;若出错,返回EOF
rename int rename(char *oldname, char *newname) 把oldname所指的文件名改为由newname指定的文件名 成功返回0,出错返回1
rewind void rewind(FILE *fp) 将fp指向的文件中的位置指针置于文件的开头位置,并清除文件结束标志
scanf int scanf(const char *format[,argument,...]) 从标准输入设备按format指向的字符串规定的格式,输入数据给argument所指向的单元 读入并赋给的数据个数,遇文件结束返回EOF;出错返回0

其他常用函数

应包含头文件<stdlib.h>

函数名 函数原型 功能 说明
exit void exit (int status) 调用该函数时程序立即正常终止,清空和关闭任何打开的文件,程序正常退出状态由status等于0表示,非0表明定义实现错误
rand int rand() 产生0到RAND_MAX之间的伪随机数(RAND_MAX在头文件中定义) 返回一个伪随机(整)数
srand void srand(unsigned seed) 为函数rand()生成的伪随机数序列设置起点种子值
posted @ 2017-07-09 13:25  main_c  阅读(1753)  评论(0编辑  收藏  举报