库函数并不是C语言的一部分,它是由编译系统根据一般用户的需要编制并提供给用户使用的一组程序。每一种C编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSI C标准提出了一批建议提供的标准库函数。它包括了目前多数C编译系统所提供的库函数,但也有一些是某些C编译系统未曾实现的。考虑到通用性,本附录列出ANSI C建议的常用库函数。
由于C库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不能全部介绍,只从教学需要的角度列出最基本的。读者在编写C程序时可根据需要,查阅有关系统的函数使用手册。
1.数学函数
使用数学函数时,应该在源文件中使用预编译命令:
#include<math.h>或#include "math.h"
函数名 | 函数原型 | 功能 | 返回值 |
acos | double acos(double x); | 计算arccos x的值,其中-1<=x<=1 | 计算结果 |
asin | double asin(double x); | 计算arcsin x的值,其中-1<=x<=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); | 计算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分解成数字部分(尾数)和以2为底的指数,即val=x*2n,n存放在eptr指向的变量中 | 数字部分x 0.5<=x<1 |
log | double log(double x); | 求lnx的值 | 计算结果 |
log10 | double log10(double x); | 求log10x的值 | 计算结果 |
modf | double modf(double val, int *iptr); | 把双精度数val分解成数字部分和小数部分,把整数部分存放在ptr指向的变量中 | val的小数部分 |
pow | double pow(double x, double y); | 求xy的值 | 计算结果 |
sin | double sin(double x); | 求sin x的值,其中x的单位为弧度 | 计算结果 |
sinh | double sinh(double x); | 计算x的双曲正弦函数sinh x的值 | 计算结果 |
sqrt | double sqrt (double x); | 计算,其中x≥0 | 计算结果 |
tan | double tan(double x); | 计算tan x的值,其中x的单位为弧度 | 计算结果 |
tanh | double tanh(double x); | 计算x的双曲正切函数tanh x的值 | 计算结果 |
2.字符函数
在使用字符函数时,应该在源文件中使用预编译命令:
#include<ctype.h>或#include "ctype.h"
函数名 | 函数原型 | 功能 | 返回值 |
isalnum | int isalnum(int ch); | 检查ch是否字母或数字 | 是字母或数字返回1,否则返回0 |
isalpha | int isalpha(int ch); | 检查ch是否字母 | 是字母返回1,否则返回0 |
iscntrl | int iscntrl(int ch); | 检查ch是否控制字符(其ASCII码在0和0xlF之间) | 是控制字符返回1,否则返回0 |
isdigit | fopen函数失败 int isdigit(int ch); | 检查ch是否数字 | 是数字返回1,否则返回0 |
isgraph | int isgraph(int ch); | 检查ch是否是可打印字符(其ASCII码在0x21和0x7e之间),不包括空格 | 是可打印字符返回1,否则返回0 |
islower | int islower(int ch); | 检查ch是否是小写字母(a~z) | 是小字母返回1,否则返回0 |
isprint | int isprint(int ch); | 检查ch是否是可打印字符(其ASCII码在0x21和0x7e之间),不包括空格 | 是可打印字符返回1,否则返回0 |
ispunct | int ispunct(int ch); | 检查ch是否是标点字符(不包括空格)即除字母、数字和空格以外的所有可打印字符 | 是标点返回1,否则返回0 |
isspace | int isspace(int ch); | 检查ch是否空格、跳格符(制表符)或换行符 | 是,返回1,否则返回0 |
isupper | int isupper(int ch); | 检查ch是否大写字母(A~Z) | 是大写字母返回1,否则返回0 |
isxdigit | int isxdigit(int ch); | 检查ch是否一个16进制数字 (即0~9,或A到F,a~f) | 是,返回1,否则返回0 |
tolower | int tolower(int ch); | 将ch字符转换为小写字母 | 返回ch对应的小写字母 |
toupper | int toupper(int ch); | 将ch字符转换为大写字母 | 返回ch对应的大写字母 |
3.字符串函数
使用字符串中函数时,应该在源文件中使用预编译命令:
#include<string.h>或#include "string.h"
函数名 | 函数原型 | 功能 | 返回值 |
memchr | void memchr(void *buf, char ch, unsigned count); | 在buf的前count个字符里搜索字符ch首次出现的位置 | 返回指向buf中ch的第一次出现的位置指针。若没有到ch,返回NULL |
memcmp | int memcmp(void *buf1, void *buf2, unsigned count); | 按字典顺序比较由buf1和buf2指向的数组的前count个字符 | buf1<buf2,为负数 buf1=buf2,返回0 buf1>buf2,为正数 |
memcpy | void *memcpy(void *to, void *from, unsigned count); | 将from指向的数组中的前count个字符拷贝到to指向的数组中。From和to指向的数组不允许重叠 | 返回指向to的指针 |
memove | void *memove(void *to, void *from, unsigned count); | 将from指向的数组中的前count个字符拷贝到to指向的数组中。From和to指向的数组不允许重叠 | 返回指向to的指针 |
memset | void *memset(void *buf, char ch, unsigned count); | 将字符ch拷贝到buf指向的数组前count个字符中。 | 返回buf |
strcat | char *strcat(char *str1, char *str2); | 把字符str2接到str1后面,取消原来str1最后面的串结束符“\0” | 返回str1 |
strchr | char *strchr(char *str,int ch); | 出str指向的字符串中第一次出现字符ch的位置 | 返回指向该位置的指针,如不到,则应返回NULL |
strcmp | int *strcmp(char *str1, char *str2); | 比较字符串str1和str2 | 若str1<str2,为负数 若str1=str2,返回0 若str1>str2,为正数 |
strcpy | char *strcpy(char *str1, char *str2); | 把str2指向的字符串拷贝到str1中去 | 返回str1 |
strlen | unsigned intstrlen(char *str); | 统计字符串str中字符的个数(不包括终止符“\0”) | 返回字符个数 |
strncat | char *strncat(char *str1, char *str2, unsigned count); | 把字符串str2指向的字符串中最多count个字符连到串str1后面,并以NULL结尾 | 返回str1 |
strncmp | int strncmp(char *str1,*str2, unsigned count); | 比较字符串str1和str2中至多前count个字符 | 若str1<str2,为负数 若str1=str2,返回0 若str1>str2,为正数 |
strncpy | char *strncpy(char *str1,*str2, unsigned count); | 把str2指向的字符串中最多前count个字符拷贝到串str1中去 | 返回str1 |
strnset | void *setnset(char *buf, char ch, unsigned count); | 将字符ch拷贝到buf指向的数组前count个字符中。 | 返回buf |
strset | void *setset(void *buf, char ch); | 将buf所指向的字符串中的全部字符都变为字符ch | 返回buf |
strstr | char *strstr(char *str1,*str2); | 寻str2指向的字符串在str1指向的字符串中首次出现的位置 | 返回str2指向的字符串首次出向的地址。否则返回NULL |
4.输入输出函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论