拾遗:ANSI C

   <ctype.h>:用于测试或转换字符

  • int isalnum(int c);  检查字符c是否是字母或数字
  • int isalpha(int c);   检查字符c是否是字母
  • int iscntrl(int c);  是否是控制字符,asni编码中000至037及177(DEL)
  • int isdigit(int c);  是否是十进制数字
  • int isxdigit(int c);  是否是十六进制数字
  • int isgraph(int c);  检查字符c是否有图形表示法,等价于alnum与punct的合集
  • int islower(int c);  是否是小写字母
  • int isupper(int c);  是否是大写字母
  • int ispunct(int c);  是否是标点符号
  • int isblank(int c);  是否是空格符或制表符
  • int isspace(int c);  是否是空格、换行、回车、换页、水平及竖直制表符
  • int tolower(int c);  把大写字母转换为小写
  • int toupper(int c);  把小写字母转换为大写

  <errno.h>:程序启动时,被初始化为0,非零值对应不同的错误,其值可人为修改;

  <float.h>:ANSI标准中关于浮点数的常量,FLT指float类型,DBL指double类型,LDBL指long double类型;

浮点数结构:
floating-point = (+/-) precision x baseexponent

base——基数,2表示二进制,10表示十进制,16表示十六进制;precision——精度,基数base的有效位数;exponent——指数,介于emin与emax之间的整数

  • FLT_MAX FLT_MIN  float类型最大最小值
  • DBL_MAX DBL_MIN  double因型最大最小值
  • LDBL_MAX LDBL_MIN  long double类型最大最小值

  <limits.h>:定义了char、short、int、long int、long long int及对应unsigned类型的取值范围

  • CHAR_BIT  定义byte与bit的换算关系,1 byte = 8 bit
  • SHRT_MAX/MIN  定义short型取值范围
  • USHRT_MAX  定义unsigned short型最大值,最小值为0
  • INT_MAX/MIN  定义int型取值范围
  • UINT_MAX  定义unsigned int最大值,最小值为0
  • LONG_MAX/MIN  定义long int的取值范围
  • ULONG_MAX  定义unsigned long int型的最大值,最小值为0
  • NAME_MAX
  • CHAR_MAX

  <math.h>: 定义了基本的数学函数,返回值及参数类型全部为double型

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

  <signal.h>:处理或生成信号

  • int raise(int sig);  生成sig变量指定的信号 
  • kill
  • sigaction
  • sigsuspend
  • sigpending
  • sigaddset
  • sigemptyset
  • sigfillset
  • sigdelset
  • sigismember
  • sigprocmask

  <stdarg.h>:用于处理函数的可变参数

  • va_list  头文件中定义的变量数据类型,适用于以下三个宏
  • void va_start(va_list ap, last_arg);  这个宏初始化ap变量,last_arg是最后一个传递给函数的固定参数(即省略号 ... 之前的参数,代表可变参数的数量)
  • type va_arg(va_list ap, type);  检索可变参数列表中类型为type的下一个参数,通常与左值类型相同
  • void va_end(va_list ap);  结束操作,释放资源

  <stdio.h>:I/O库 

  • 数据类型
    • size_t  库定义的变量数据类型,常用于 sizeof() 的结果
    • FILE  代表文件流指针对象的数据类型
  • 宏 
    • _IOFBF / _IOLBF / _IONBF  fully buffered、line buffered、unbuffered,适用于 setvbuf 函数的第三个参数
    • BUFSIZ  代表 setvbuf 函数使用的缓冲区大小
    • FOPEN_MAX  代表系统可以同时打开的文件数量
    • FILENAME_MAX  代表字符数组可以存储的文件名称的最大长度
    • L_tmpnam  代表字符数组可以存储的由 tmpnam 函数创建的文件名称的最大长度
    • SEEK_CUR / SEEK_SET / SEEK_END  在fseek 函数中,用于定位文件中的不同位置:当前位置、文件开头、文件末尾
    • TMP_MAX  代表 tmpnam 函数可生成的临时文件名的最大数量
    • stderr/stdin/stdout   代表标准错误、标准输入、标准输出
  • 函数
    • int fclose(FILE *stream);  关闭流stream,将相关的缓冲区全部内容送交内核处理
    • void clearerr(FILE *steam);  清除文件结束或相关错误的标识
    • int feof(FILE *stream);  测试流的文件结束标识符
    • int ferror(FILE *stream);  测试 stream 的文件错误标识符
    • int fflush(FILE *stream);  刷新 stream 的输出缓冲区,fclose() 执行时同样操作
    • FILE *fopen(const char *filename, const char *mode);  使用指定的模式打开指定的文件:r、r+、w、w+、rb、wb等
    • size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);  从 stream 中读取以 size 为基本单位的 nmemb 数量的数据到 ptr 所指向的数组中
    • size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream);  从 ptr 所指向的数组中,以 size 为基本单位的 nmemb 数量的数据写到 stream 中
    • FILE *reopen(const char *filename, const char *mode, FILE *stream);  文件指针重定向
    • int fseek(FILE *stream, long int offset, int whence);  将当前文件指针基于 whence 位置移动 offset 字节
    • long int ftell(FILE *stream);  返回 stream 的当前位置
    • int remove(const char *filename);  删除文件名称,使其不再被访问
    • int rename(const char *old_filename, const char *new_filename);  重命名
    • void rewind(FILE *stream);  将文件指针位置重置为文件开头
    • void setvbuf(FILE *stream, char *buffer, int mode, size_t size);  定义用户空间缓冲区
    • FILE *tmpfile(void);  以二进制模式 wb+ 创建临时文件
    • char *tmpnam(char *str);  生成并返回一个临时文件名,这个名称之前是不存在的
    • void perror(const char *str);  将错误描述信息发送至 stderr ,首选输出字符串 str ,后跟一个冒号和空格
    • int fprintf(FILE *stream, const char *format, ...);  发送格式化输出到 stream 中
    • int vfprintf(FILE *stream, const char *format, va_list arg);  使用参数列表 arg 发送格式化输出到 stream 中
    • int sprintf(char *str, char *format, ...);  发送格式化输出到字符串 str 中
    • int vsprintf(char *str, char *format, va_list arg);  使用参数列表 arg 发送格式化输出到 stream 中 
    • int printf(const char *format, ...);   相当于 fprintf(stdout, const char *format, ...);
    • int vprintf(const char *format, va_list arg);  相当于 vfprintf(stdout, const char *format, va_list arg);
    • int fscanf(FILE *stream, const char *format, ...);  从字节流 stream 中读取格式化输入
    • int sscanf(const char *str, const char *format, ...);  从字符串 str 中读取格式化输入
    • int scanf(const char *format, ...);  相当于 fscanf(stdin, const char *format, ...);
    • int fgetc(FILE *stream);  从 stream 中读取一个字符,并将文件指针往前移动一个字节
    • char *fgets(char *str, int n, FILE *stream);  从流 stream 中读取 n-1 个字符到字符串指针 str 所指向的字符串数组中,最后一字节添充 \0;遇到 \n 或 到达文件末尾会停止读取
    • int fputc(int char, FILE *stream);  把指定字符写入到 stream 中 
    • int fputs(const char *str, FILE *stream);  将字符串写入到 sream 中,不包含 \0 
    • int putchar(int char);  将一具字符输出到 stdout 中
    • int getchar(void);  从 stdin 中接收一个字符
    • int ungetc(int char, FILE *stream);  把一个字符重新放回到 stream 中,相当于辙消 fgetc(FILE *stream) 的一步操作;单次操作保证成功,多次操作不一定成功
    • temfile

  <stdlib.h>:通用工具库

  • 变量
    • environ
    • EXIT_FAILURE  用于 exit() 函数的参数,表示程序执行失败
    • EXIT_SUCCESS  用于 exit() 函数的参数,表示程序执行成功
    • RAND_MAX  表示 rand() 函数能返回的最大值
  • 函数
    • double atof(const char *str);  将字符串 str 的字面值转换为 double 型数值,相当于直接去除类似 “123.45” 两边的引号 “
    • long int atol(const char *str);  同上,转换为 long int 型
    • int atoi(const char *str);  同上,转换为 int 型
    • void *calloc(size_t n, size_t size);  为一个包含 n 个元素(每个元素大小为 size 字节,故分配出的总空间大小为 n * size)的数组分配内存空间,并将所有元素初始化为0,返回该内存空间的指针
    • void *malloc(size_t size);  为任一对象分配总大小为 size 字节的内存空间,不做初始化,返回指向分配出的内存空间的指针
    • void *realloc(void *ptr, seze_t size);  将之前由 calloc 或 malloc 分配的内存空间重新调整为 size 个字节的大小
    • void free(void *ptr);  释放之前由 calloc 或 malloc 或 realloc 分配的内存空间
    • void abort(void);  使一个程序以异常状态终止
    • int atexit(void (*func)(void));  程序正常终止之前调用 func 函数
    • int exit(int status);  使一个程序正常终止,并返回 status 给操作系统
    • char *getenv(const char *env_name);  搜索 env_name 所指向的环境变量,返回变量值到一个字符串中
    • int system(const char *string);  执行外部系统 shell 命令
    • int abs(int x)/long int abs(long int x);  整数绝对值,对于更大的数值对象,可使用 math.h 中的 double fabs(double x);
    • int rand(void);  返回 0 至 RAND_MAX 之间的伪随机数
    • void srand(unsigned int seed);  用于 rand() 函数的随机数发生器,通常以 time(NULL) 作为参数,即以自197001010000至今的秒数表示动态时间
    • void qsort(void *base, size_t nterms, size_t size, int (*compar)(const void *, const void *));  对 base 所指向的数组,按 compar 函数定义的规则,以快速排序算法进行排序,compar 函数需要自行定义
    • compar 函数示例:
      
      struct test{
          int x;
          int y;
      };
      
      int compar(struct test *a, struct test *b) /*若返回值大于 0,则 qsort 函数会把 a 排在 b 的后面;若返回值小于 0 , a 将排在 b 的前面*/
      {
          if(a->x ==  b->x)
          {
              return (a->y - b->y); /*若 x 项相等,再以 y 项为标准进行排列,升序;若返回项改为 return (b->y - a->y),将进行降序排列*/
          }
          else
          {
              return (a->x - b->x);
          }
      }
    • void *bsearch(const void *key, void *base, size_t nterms, size_t size, int (*compar)(const void *, const void *));   通常用途:在由 qsort 排序过的数组中以二分查找法查找与 key 相匹配的内容,返回第一个匹配项的位置指针,若目标数组中存在多个匹配项,则返回结果不确定是哪一个;查找目标 base 数组必须是事先排好序的,且必须与 compar 函数的排序逻辑一致
    • mkstemp
    • getenv
    • putenv

  <string.h>:字符串相关函数

  •  函数
    • void *memchr(const void *s, int c, size_t n);  查询 s 的前 n 个字节中,首次匹配字符 c 的位置,mem 类函数可作用于所有对象,str 类函数只能作用于字符串数组
    • void *memrchr(const void *s, int c, size_t n);  _GNU_SOURCE,Linux 特有,功能与memchr类似,但查询范围为 s 的最后 n 个字节
    • int memcmp(const void *s1, const void *s2, size_t n);  比较 s1 和 s2 前 n 个字节的大小关系
    • void *memcpy(void *dest, const void *src, size_t n);  从 src 中复制 n 个字节到 dest 中
    • void *memmove(void *dest, const void *src, size_t n);  功能与 memcpy 基本相同,但可以保证当 src 和 dest 有重叠的时候得到正确的结果,效率低于memcpy
    • void *memset(void *s, int c, size_t n);  将 s 的前 n 个字节的内容全部设置(替换)为 c
    • char *strcat(char *dest, const char *src);  将 src 的所有内容追加到 dest 的结尾,dest 必须足够大以容纳 src 与 dest 的总长度
    • char *strncat(char *dest, const char *src, size_t n);  将 src 的前 n 个字节的内容追加到 dest 的结尾
    • int strcmp(const char *s1, const char *s2);  比较两具字符串的大小关系
    • int strncmp(const char *s1, const char *s2, size_t n);  比较两个字符串前 n 个字节的大小关系
    • char *strcpy(char *dest, const char *src);  字符串复制
    • char *strncpy(char *dest, const char *src, size_t n);  将 src 中的前 n 个字节复制到 dest
    • size_t strcspn(const char *s, const char *reject);  返回字符串 s 中(从开头计算)不包含在 reject 中的连续字符数(字节长度)
    • size_t strspn(const char *s, const char *accept);  返回字符串 s 中(从开头计算)包含在 accept 中的连续字符数(字节长度)
    • char *strerror(int errnum);  显示错误代码的文本信息
    • size_t strlen(const char *s);  显示字符串长度(不包括 \0)
    • char *strpbrk(const char *s, const char *accept);  检索 s 中第一个存在于 accept 中的字符位置,其值等于 strapn() 函数的结果加1
    • char *strrchr(const char *s, int c);  检索 c 在 s 中最后一次出现的位置
    • char *strchr(const char *s, int c);  检索 c 在 s 中第一次出现的位置
    • char *strstr(const char *haystack, const char *needle);  检索 needle 在 haystack 中第一次出现的位置(不计算空字符 \0)
    • char *strsep(char **stringp, const char *delim);   _DEFAULT_SOURCE,Linux特有,将字符串 string 按 delim 中列出的分割符进行分割(可以按空白分割),直到 stringp 为 NULL,则返回 NULL,循环调用即可得到分割后的每个字段
    • char *strtok(char *str, const char *delim);  标准库自带函数,与 strsep() 功能类似,但不能以空白类字符分割,且效率较低,存在 BUG
    • char *strdup(const char *s);  将常量字符串 s 转变为字符数组(即从只读内存区复制到变量区),通常用于指针操作
    • char *strndup(const char *s, size_t n);  将常量字符串 s 的前 n 个字节转变为字符数组,通常用于指针操作

  <time.h>:操作日期、时间

  • 数据类型
    • clock_t
    • time_t
    • struct tm
    • struct tm {
          int tm_sec;  /*秒,范围 0 - 60*/
          int tm_min;  /*分钟,范围 0 - 59*/
          int tm_hour;  /*小时,范围 0 - 23*/
          int tm_mday;  /*月份中的第几天,范围 0 - 31*/
          int tm_mon;  /*月份,范围 0 - 11*/
          int tm_year;  /*自 1900 年起累加的年数,实际使用中通常在结果中加 1900*/
          int tm_wday;  /*一周中的第几天,范围 0 - 6*/
          int tm_yday;  /*一年中的第几天,范围 0 - 365*/
          int tm_isdst;  /*夏令时*/
      };
    • CLOCKS_PER_SEC
  • 函数
    • clock_t clock(void);  cpu时钟计时,不保证准确,因为会周期性置 0 ,使用时需结合 CLOCKS_PER_SEC 宏转换为秒
    • char *ctime(const time_t *timer);  简易显示当前时间的文本信息(当地时间)
    • struct tm *gmtime(const time_t *timer);  返回 timer 指定的时间的 UTC 时间 tm 结构体
    • struct tm *localtime(const time_t *timer);  同 gmtime ,但转换为本地时区对应的信息
    • time_t mktime(struct tm *timeptr);  将一个 UTC 时间的 tm 结构体转换为本地时区的 time_t 值
    • time_t time(time_t *timer);  获取时间数据,通常给定 NULL 参数,表示当前时间(距离 1970-01-01 00:00:00 的秒数)
原文地址:https://www.cnblogs.com/hadex/p/5973999.html