zoukankan      html  css  js  c++  java
  • 拾遗: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 的秒数)
  • 相关阅读:
    正则表达式
    kafka Auto offset commit faild reblance
    安装包问题
    身份证头像截取
    web表单
    模板与继承与控制语句
    虚拟环境安装及Hello World
    flask入门脚本解释
    python3 邮件发送
    ASP.NET MVC文件上传简单示例
  • 原文地址:https://www.cnblogs.com/hadex/p/5973999.html
Copyright © 2011-2022 走看看