标准库函数_2

math.h

库宏

说明
HUGE_VAL 当函数的结果不可以表示为浮点数时。如果是因为结果的幅度太大以致于无法表示,则函数会设置 errno 为 ERANGE 来表示范围错误,并返回一个由宏 HUGE_VAL 或者它的否定(- HUGE_VAL)命名的一个特定的很大的值。如果结果的幅度太小,则会返回零值。在这种情况下,error 可能会被设置为 ERANGE,也有可能不会被设置为 ERANGE。

三角函数

函数 说明
double sin(double angle) 返回弧度角 angle 的正弦。
double cos(double angle) 返回弧度角 angle 的余弦。
double tan(double angle) 返回弧度角 angle 的正切。
double asin(double value) 返回以弧度表示的 value 的反正弦。
double acos(double value) 返回以弧度表示的 value 的反余弦。
double atan(double value) 返回以弧度表示的 value 的反正切。
double atan2(double y, double x) 返回以弧度表示的 y/x 的反正切。y 和 x 的值的符号决定了正确的象限。

注意:

  • sincostan输入参数的角度都是弧度值。
  • asinacos的参数如果不是-1~1之间,就出现一个定义域错误。
  • asinatan的返回值范围是:-pi/2~pi/2之间的弧度。
  • acos的返回值范围是:-pi~pi之间的弧度。

双曲函数

函数 说明
double sinh(double angle) 返回弧度角 angle 的双曲正弦。
double cosh(double angle) 返回弧度角 angle 的双曲余弦。
double tanh(double angle) 返回弧度角 angle 的双曲正切。

对数和指数函数

函数 说明
double exp(double x) 返回 e 的 x 次幂的值。
double log(double x) 返回 x 的自然对数(基数为 e 的对数)。
double log10(double x) 返回 x 的常用对数(基数为 10 的对数)。

浮点表示形式

函数 说明
double frexp(double x, int *exponent) 把浮点数 x 分解成尾数和指数。返回值是尾数,并将指数存入 exponent 中。所得的值是 x = mantissa * 2 ^ exponent,mantissa是函数的返回值。
double ldexp(double x, int exponent) 返回 x 乘以 2 的 exponent 次幂。
double modf(double x, double *integer) 返回值为小数部分(小数点后的部分),并设置 integer 为整数部分。

函数 说明
double pow(double x, double y) 返回 x 的 y 次幂。
double sqrt(double x) 返回 x 的平方根。

底数、顶数、绝对值、余数

函数 说明
double ceil(double x) 返回大于或等于 x 的最小的整数值。
double floor(double x) 返回小于或等于 x 的最大的整数值。
double fabs(double x) 返回 x 的绝对值。
double fmod(double x, double y) 返回 x 除以 y 的余数。

time.h

库宏

说明
NULL 是一个空指针常量的值。
CLOCKS_PER_SEC 表示每秒的处理器时钟个数。

库变量

变量 说明
size_t 是无符号整数类型,它是 sizeof 关键字的结果。
clock_t 是一个适合存储处理器时间的类型。
time_t 是一个适合存储日历时间类型。
struct tm 是一个用来保存时间和日期的结构。

tm 结构的定义如下:

struct tm {
   int tm_sec;         /* 秒,范围从 0 到 59        */
   int tm_min;         /* 分,范围从 0 到 59        */
   int tm_hour;        /* 小时,范围从 0 到 23        */
   int tm_mday;        /* 一月中的第几天,范围从 1 到 31    */
   int tm_mon;         /* 月,范围从 0 到 11        */
   int tm_year;        /* 自 1900 年起的年数        */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6    */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365    */
   int tm_isdst;       /* 夏令时                */
};

处理器时间

函数 说明
clock_t clock(void) 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。返回值通常是处理器时钟滴答的次数,为了把这个数值转换成秒,需要除以CLOCKS_PER_SEC。

当天时间

函数 说明
time_t time(time_t *timer) 计算当前日历时间,并把它编码成 time_t 格式。

说明:

  • 如果参数是非NULL值,时间值也将通过这个这个指针进行存储。
  • 如果机器无法提供当前的日期和时间,或者时间值太大,无法使用time_t 变量表示,函数返回-1
  • 在MS-DOS和UNIX系统中,时刻开始流失的时刻是1970年1月1日00:00:00 。

日期和时间转换

函数 说明
char *ctime(const time_t *timer) 返回一个表示当地时间的字符串,当地时间是基于参数 timer。
double difftime(time_t time1, time_t time2) 返回 time1 和 time2 之间相差的秒数 (time1-time2)。
struct tm *gmtime(const time_t *timer) timer 的值被分解为 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。
struct tm *localtime(const time_t *timer) timer 的值被分解为 tm 结构,并用本地时区表示。
char *asctime(const struct tm *timeptr) 返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。
time_t mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。

注意:

  • strftime格式化代码:
代码 说明
%% 百分号
%a 星期几的简写
%A 星期几的全称
%b 月份的简写
%B 月份的全称
%c 日期和时间
%d 一个月的第几天(01-31)
%H 24小时制的小时(00-23)
%I 12小时制的小时(00-12)
%J 一年的第几天
%m 月数(01-12)
%M 分钟(00-59)
%p 本地的AM或PM的等价显示
%S 秒(00-59)
%U 一年的第几周,把星期日做为第一天(值从0到53)
%w 一星期的第几天,星期日为第0天
%W 一年的地基星期(值从0到53),星期一为第一天
%x 使用本地的日期格式
%X 使用本地的时间格式
%y 当前世纪的年份(00-99)
%Y 年份的全写形式
%Z 时区名称,如果不能得到时区名称则返回空字符。

assert.h

说明
void assert(int expression) 这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。

说明:

  • 如果宏对表达式测试的结果为假,它就向标准错误打印一条诊断信息并终止程序。
  • 当程序被完整测试完毕之后,可以在编译时通过定义NDEBUG消除所有的断言。当NDEBUG被定义后,预处理器将丢弃所有的断言,而不必在程序中把所有的断言实际删除。

ctype.h

函数 说明
int isalnum(int c) 该函数检查所传的字符是否是字母和数字。
int isalpha(int c) 该函数检查所传的字符是否是字母。
int iscntrl(int c) 该函数检查所传的字符是否是控制字符。
int isdigit(int c) 该函数检查所传的字符是否是十进制数字。
int isgraph(int c) 该函数检查所传的字符是否有图形表示法。
int islower(int c) 该函数检查所传的字符是否是小写字母。
int isprint(int c) 该函数检查所传的字符是否是可打印的。
int ispunct(int c) 该函数检查所传的字符是否是标点符号字符。
int isspace(int c) 该函数检查所传的字符是否是空白字符。
int isupper(int c) 该函数检查所传的字符是否是大写字母。
int isxdigit(int c) 该函数检查所传的字符是否是十六进制数字。
int tolower(int c) 该函数把大写字母转换为小写字母。
int toupper(int c) 该函数把小写字母转换为大写字母。

说明:

  • 图形字符:字母、数字字符和标点符号字符的集合。
  • 可打印字符:字母、数字字符、标点符号字符和空格字符的集合。
  • 控制字符:在 ASCII 编码中,这些字符的八进制代码是从 000 到 037,以及 177(DEL)。
  • 空格字符:制表符、换行符、垂直制表符、换页符、回车符、空格符的集合。
  • 空白字符:包括空格符和制表符。

string.h

库变量

变量 说明
size_t 无符号整数类型,它是 sizeof 关键字的结果。

库宏

说明
NULL 是一个空指针常量的值。

字符串长度

函数 说明
size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。

不受限制的字符串函数

函数 说明
char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。
char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。

长度受限的字符串函数

函数 说明
char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。
char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进行比较,最多比较前 n 个字节。

字符串查找

函数 说明
char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。
char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。
char *strpbrk(const char *str1, const char *str2) 检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。
char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。
size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。
size_t strcspn(const char *str1, const char *str2) 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。
char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。

内存操作

函数 说明
void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。
int memcmp(const void *str1, const void *str2, size_t n) 把 str1 和 str2 的前 n 个字节进行比较。
void *memcpy(void *dest, const void *src, size_t n) 从 src 复制 n 个字符到 dest。
void *memmove(void *dest, const void *src, size_t n) 另一个用于从 src 复制 n 个字符到 dest 的函数。
void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。

错误信息

函数 说明
char *strerror(int errnum) 从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。

其它

函数 说明
int strcoll(const char *str1, const char *str2) 把 str1 和 str2 进行比较,结果取决于 LC_COLLATE 的位置设置。
size_t strxfrm(char *dest, const char *src, size_t n) 根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。
posted @ 2019-09-15 10:43  youngliu91  阅读(369)  评论(0编辑  收藏  举报