C语言标准库所包含的函数功能介绍(1)
C 语言的标准库通常包含了一组标准头文件和一个或几个库函数代码文件。在写 C 程序时,只需使用 #include 预处理命令引入相关头文件,就可以保证程序里能够正确使用标准库功能了。
在这些头文件里列出了各个库函数的原型,定义了库函数所使用的有关类型(如表示流的 FILE 结构类型等)和一些符号常量(如 EOF、NULL)。
标准头文件包括:
C标准头文件
下面是对每个标准库所包含的函数功能的简单介绍。
1、<stdio.h>
stdio.h 即 standard input & output(标准输入输出)。在源代码中如用到标准输入输出函数时,就要包含这个头文件。
stdio.h所包含的函数:
- 文件访问:fopen、freopen、fflush、fclose
- 二进制输入/输出:fread、fwrite
- 非格式化输入/输出:fgetc/getc、fputc/putc、ungetc、fgets、fputs
- 格式化输入/输出:scanf/fscanf/sscanf、printf/fprintf/sprintf、perror
- 文件定位:ftell、fseek、fgetpos、fsetpos、rewind
- 错误处理:feof、ferror
- 文件操作:remove、rename、tmpfile
2、<stdlib.h>
stdlib.h 即 standard library 标准库头文件。stdlib.h里面定义了五种类型、一些宏和常用的系统函数。
- 类型:size_t、wchar_t、div_t、ldiv_t和lldiv_t;
- 宏例:EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等;
常用的函数:malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等。
- int atoi(const char *nptr):表示 ascii to integer,把字符串转换成整型数;
- long atol(const char *nptr):把字符串转换成长整型数;
- rand():产生随机数的一个随机函数;
- void srand(unsigned int seed):srand和rand()配合使用产生伪随机数序列。
rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列
3、<stddef.h>
stddef.h 定义了一些标准宏和类型,包括:
- size_t(sizeof运算符的结果类型,无符号整型);
- ptrdiff_t (两个指针相减运算的结果类型,有符号整型);
- wchar_t (宽字符类型,整型);
- 指针常量 NULL(空指针值);
- offsetof(type, member-designator) :获得字段在结构体中的偏移量。
无论包含哪个标准头文件,都会自动将<stddef.h>包含进来。
4、<ctype.h>
ctype.h 定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特定的字符类别,如字母字符、控制字符等。
- int isalpha(char ch):检查ch是否是字母;
- int iscntrl(int ch):检查ch是否控制字符(其ASCII码在0和0x1F之间,数值为 0-31);
- int isdigit(char ch):检查ch是否是数字(0-9);
- int islower(int ch):检查ch是否小写字母(a-z);
- int isupper(int ch):检查ch是否是大写字母(A-Z);
- int tolower(int ch):将ch字符转换为小写字母;
- int toupper(int ch):将ch字符转换成大写字母;
- int isspace(int ch):检查ch是否是空格符、跳格符或换行符;
- int isascii(int ch):测试参数是否是ASCII码0-127;
5、<string.h>
关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等。
- char *strcpy(char *destin, char *source):拷贝一个字符串到另一个;
- char *strncpy(char *dest, char *src, size_t n):将字符串src中最多n个字符复制到字符数组dest中,它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制;
- char *strcat(char *destin, char *source):字符串拼接函数;
- char *strrev(char *str):字符串倒转;
- char *strchr(char *str, char c):在一个串中查找给定字符的第一个匹配之处;
- size_tstrlen(const char *s):求字符串的长度,从字符串的首地址开始到遇到第一个'\0'停止计数;
- int strcmp(char *str1, char *str2):字符串比较,看ASCII 码,str1>str2,返回值 > 0;两串相等,返回0;
接下文: