C语言标准库

目录

前言

stdlib.h

1,字符串转为整数

2,二分查找bsearch

3,排序qsort

4,绝对值

stdio.h

1,库变量

2,库宏

3,库函数

string.h

1,基于内存的操作

2,基于字符串的操作

assert.h

ctype.h

limits.h

math.h

stddef.h

stdarg.h

1,简介

2,库变量

3,库宏


前言

本文列举了标准库中,比较常用的内容。

stdlib.h

1,字符串转为整数

1double atof(const char *str)
把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。
2int atoi(const char *str)
把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。
3long int atol(const char *str)
把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。

这里的转换只能是10进制的,其他进制的函数参考ACM模板

2,二分查找bsearch

void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))
  • key -- 指向要查找的元素的指针,类型转换为 void*。
  • base -- 指向进行查找的数组的第一个对象的指针,类型转换为 void*。
  • nitems -- base 所指向的数组中元素的个数。
  • size -- 数组中每个元素的大小,以字节为单位。
  • compar -- 用来比较两个元素的函数。

如果查找成功,该函数返回一个指向数组中匹配元素的指针,否则返回空指针。.

3,排序qsort

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
  • base -- 指向要排序的数组的第一个元素的指针。
  • nitems -- 由 base 指向的数组中元素的个数。
  • size -- 数组中每个元素的大小,以字节为单位。
  • compar -- 用来比较两个元素的函数。

4,绝对值

int abs(int x)
long int labs(long int x)

stdio.h

1,库变量

FILE
这是一个适合存储文件流信息的对象类型。

2,库宏

EOF
这个宏是一个表示已经到达文件结束的负整数。
stderr、stdin 和 stdout
这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。

3,库函数

FILE *fopen(const char *filename, const char *mode)
使用给定的模式 mode 打开 filename 所指向的文件。
int fclose(FILE *stream)
关闭流 stream。刷新所有的缓冲区。
FILE *freopen(const char *filename, const char *mode, FILE *stream)
把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。
int fprintf(FILE *stream, const char *format, ...)
发送格式化输出到流 stream 中。
int printf(const char *format, ...)
发送格式化输出到标准输出 stdout。
int sprintf(char *str, const char *format, ...)
发送格式化输出到字符串。
int fscanf(FILE *stream, const char *format, ...)
从流 stream 读取格式化输入。
int scanf(const char *format, ...)
从标准输入 stdin 读取格式化输入。
int sscanf(const char *str, const char *format, ...)
从字符串读取格式化输入。
int getc(FILE *stream)
从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
int getchar(void)
从标准输入 stdin 获取一个字符(一个无符号字符)。
char *gets(char *str)
从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
int putc(int char, FILE *stream)
把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
int putchar(int char)
把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
int puts(const char *str)
把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。

string.h

1,基于内存的操作

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

memset作用:给s数组前n项所有内存赋值为a,注意,这里只取a的低8位,即a%256,也就是说memset是按照字节赋值的。

举例:

#include <iostream>
#include<string.h>
using namespace std;

int main()
{
	int x[10];
	memset(x, -1, sizeof(x));
	memset(x, 0, sizeof(x));
	return 0;
}

或者:

#include <iostream>
#include<string.h>
using namespace std;

int main()
{
	char x[10];
	memset(x, 'a', sizeof(x));
	return 0;
}

2,基于字符串的操作

6char *strcat(char *dest, const char *src)
把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
7char *strncat(char *dest, const char *src, size_t n)
把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
8char *strchr(const char *str, int c)
在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。
9int strcmp(const char *str1, const char *str2)
把 str1 所指向的字符串和 str2 所指向的字符串进行比较。
10int strncmp(const char *str1, const char *str2, size_t n)
把 str1 和 str2 进行比较,最多比较前 n 个字节。
12char *strcpy(char *dest, const char *src)
把 src 所指向的字符串复制到 dest
13char *strncpy(char *dest, const char *src, size_t n)
把 src 所指向的字符串复制到 dest,最多复制 n 个字符。
16size_t strlen(const char *str)
计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
20char *strstr(const char *haystack, const char *needle)
在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。

assert.h

C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。

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

ASSERT() 是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为 FALSE (0), 程序将报告错误,并终止执行。如果表达式不为 0,则继续执行后面的语句。

封装用法:

if(......)

{

    assert(0);

}

assert 的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止程序运行。

使用 assert 的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。

ctype.h

判读函数:

1int isalnum(int c)
该函数检查所传的字符是否是字母和数字。
2int isalpha(int c)
该函数检查所传的字符是否是字母。
3int iscntrl(int c)
该函数检查所传的字符是否是控制字符。
4int isdigit(int c)
该函数检查所传的字符是否是十进制数字。
6int islower(int c)
该函数检查所传的字符是否是小写字母。
10int isupper(int c)
该函数检查所传的字符是否是大写字母。

转换函数:

1int tolower(int c)
该函数把大写字母转换为小写字母。
2int toupper(int c)
该函数把小写字母转换为大写字母。

limits.h

limits.h 头文件决定了各种变量类型的最大值和最小值

描述
CHAR_BIT8定义一个字节的比特数。
SCHAR_MIN-128定义一个有符号字符的最小值。
SCHAR_MAX127定义一个有符号字符的最大值。
UCHAR_MAX255定义一个无符号字符的最大值。
INT_MIN-32768定义一个整型的最小值。
INT_MAX+32767定义一个整型的最大值。
UINT_MAX65535定义一个无符号整型的最大值。
LONG_MIN-2147483648定义一个长整型的最小值。
LONG_MAX+2147483647定义一个长整型的最大值。
ULONG_MAX4294967295定义一个无符号长整型的最大值。

math.h

math.h 头文件定义了各种数学函数和一个宏。在这个库中所有可用的功能都带有一个 double 类型的参数,且都返回 double 类型的结果。

下面是这个库中定义的唯一的一个宏:

序号宏 & 描述
1HUGE_VAL

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

如果结果的幅度太小,则会返回零值。在这种情况下,error 可能会被设置为 ERANGE,也有可能不会被设置为 ERANGE。

函数 & 描述

double exp(double x)
返回 e 的 x 次幂的值。

double log(double x)
返回 x 的自然对数(基数为 e 的对数)。
double log10(double x)
返回 x 的常用对数(基数为 10 的对数)。
double pow(double x, double y)
返回 x 的 y 次幂。
double sqrt(double x)
返回 x 的平方根。
double ceil(double x)
返回大于或等于 x 的最小的整数值。
double fabs(double x)
返回 x 的绝对值。
double floor(double x)
返回小于或等于 x 的最大的整数值。

stddef.h

变量类型

序号变量 & 描述
2size_t
这是无符号整数类型,它是 sizeof 关键字的结果。

库宏

序号宏 & 描述
1NULL
这个宏是一个空指针常量的值。
2offsetof(type, member-designator)
这会生成一个类型为 size_t 的整型常量,它是一个结构成员相对于结构开头的字节偏移量。成员是由 member-designator 给定的,结构的名称是在 type 中给定的。

stdarg.h

1,简介

stdarg.h 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。

可变参数的函数通在参数列表的末尾是使用省略号(,...)定义的。

2,库变量

下面是头文件 stdarg.h 中定义的变量类型:

序号变量 & 描述
1va_list
这是一个适用于 va_start()、va_arg() 和 va_end() 这三个宏存储信息的类型。

3,库宏

下面是头文件 stdarg.h 中定义的宏:

序号宏 & 描述
1void va_start(va_list ap, last_arg)
这个宏初始化 ap 变量,它与 va_arg 和 va_end 宏是一起使用的。last_arg 是最后一个传递给函数的已知的固定参数,即省略号之前的参数。
2type va_arg(va_list ap, type)
这个宏检索函数参数列表中类型为 type 的下一个参数。
3void va_end(va_list ap)
这个宏允许使用了 va_start 宏的带有可变参数的函数返回。如果在从函数返回之前没有调用 va_end,则结果为未定义。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值