2.2 C语言标准库

标准库
                标准头文件:
                <assert.h>  <float.h>   <math.h>    <stdarg.h>  <stdlib.h>
                <ctype.h>   <limits.h>  <setjmp.h>  <stddef.h>  <string.h>
                <errno.h>   <locale.h>  <signal.h>  <stdio.h>   <time.h>
                
                <string.h>{字符串函数
                    typedef char* s,t;   typedef const char* cs,ct;
                    char *strcpy(s,ct);        拷贝
                    char *strncpy(s,ct,n);    
                    char *strcat(s,ct);        连接
                    char *strncat(s,ct,n);
                    int strcmp(cs,ct);        比较
                    int strncmp(cs,ct,n);
                    char *strchr(cs,c);        放回c字符在cs中第一次出现的位置指针
                    char *strrchr(cs,c);    放回c字符在cs中最后出现的位置指针
                    size_t strspn(cs,ct);    通过c字符放回cs前缀
                    size_t strcspn(cs,ct);
                    char *strpbrk(cs,ct);
                        放回一个指向字符串ct中的任意字符第一次在cs中的位置指针
                    char *strstr(cs,ct);    放回ct第一次出现在cs中的位置
                    size_t strlen(cs);
                    char *strerror(n);        放回一个指向与错误编号n对应的错误信息字符串的指针
                    char *strtok(s,ct);        用ct字符切割字符串
                    
                    void *memcpy(s,ct,n);    拷贝内存
                    void *memmove(s,ct,n);    
                        移动内存,与memcpy相似,不同在于memove内存空间重叠时能正确执行
                    int memcmp(cs,ct,n);    比较内存
                    void *memchr(cs,c,n);    放回c在cs的前n个字符中第一次出现的位置,
                    void *memset(s,c,n);    设置内存
                }
            
                <math.h>{数学函数
                    typedef double x,y; typedef int n; 函数返回值均为double类型
                    sin(x);        
                    cos(x);        
                    tan(x);        
                    asin(x);    sin-1(x)
                    acos(x);    cos-1(x)
                    atan(x);    tan-1(x)
                    atan2(y,x);    tan-1(y/x)
                    sinh(x);    x的双曲正弦值
                    cosh(x);    x的双曲余弦值
                    tanh(x);    x的双曲正切值
                    exp(x);        e的x次方
                    log(x);        ln(x),x>0
                    log10(x);    log10(x),x>0
                    pow(x,y);    x的y次方
                    sqrt(x);    x的平方根,x>=0
                    ceil(x);    不小于x的最小整型数,其中x的类型为double
                    floor(x);    不大于x的最大整型数,其中x的类型为double
                    fabs(x);    x的绝对值
                    ldexp(x,n);    x*(2的n次方)
                    frexp(x, int *ip);    
                    modf(x, double *ip);    
                        把x分成整数和小数两个部分,整数保存在ip函数放回小数部分
                    fmod(x,y);    求浮点余数
                }
                
                <stdlib.h>{实用函数
                    double atof(const char *s);    字符串转换为double类型。
                    int atoi(const char *s);    字符串转换为int类型。
                    long atol(const char *s);    字符串转换为long类型。
                    double strtod(const char *s, char **endp);    
                        字符串转换为double类型,跳过前面的空格,endp指向s的后缀
                    long strtol(const char *s, char **endp, int base);
                        字符串转换为long类型,跳过前面的空格,endp指向s的后缀,base表示进制。
                    unsigned long strtoul(const char *s, char **endp, int base);
                        字符串转换为unsigned long类型。
                    int rand(void);        生成一个伪随机数。
                    void srand(unsigned int seed);    设置伪随机数的种子。
                    void *calloc(size_t nobj, size_t size);
                    void *malloc(size_t size);
                        colloc与malloc类似,但是主要的区别是存储在已分配的内存空间中的值默认为0,使用malloc时,已分配的内存中可以是任意的值.
                    void *realloc(void *p, size_t size);    重新给p指向的内存空间分配内存
                    void free(void *p);  释放内存,p=NULL时不会出错。重释放会导致程序崩溃
                    void abort(void);
                    void exit(int status);    使程序正常结束,清空缓冲并且会调用atexit绑定的函数
                    int atexit(void (*fcn)(void));    程序结束执行fcn函数,成功返回0
                    int system(const char *s);
                    char *getenv(const char *name);    获得环境变量
                    void *bsearch(const void *key, const void *base,size_t n, size_t size,
                        int (*cmp)(const void *keyval, const void *datum));
                    void qsort(void *base, size_t n, size_t size,
                        int (*cmp)(const void *, const void *));
                        将数组进行升序排序
                    int abs(int n);        求绝对值
                    long labs(long n);    求绝对值
                    div_t div(int num, int denom);    求num/denom的商和余数
                    ldiv_t ldiv(long num, long denom);
                    
                }
                
                <assert.h>{断言,它是一个宏
                    void assert(int expression);   该宏只在debug版的编译器中起作用。
                        如果expression为0时,该宏在stderr中打印错误信息,并结束程序。
                }
                
                <stdarg.h>{可变参数表,不知道干嘛的
                    va_start(va_list ap, lastarg);
                    type va_arg(va_list ap, type);
                    void va_end(va_list ap);
                }
                
                <setjmp.h>{非局部跳转
                    int setjmp(jmp_buf env);    
                }
                
                <signal.h>{信号
                    void (*signal(int sig, void (*handler)(int)))(int);绑定信号处理函数。
                    int raise(int sig);        向程序发送信号sig,成功放回0
                    有效信号:
                        SIGABRT
                        SIGFPE
                        SIGILL
                        SIGINT
                        SIGSEGV
                        SIGTERM
                }
                
                <time.h>{日期和时间函数
                    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;    年
                        int tm_wday;    星期(0-6)
                        int tm_yday;    那一年的第几天(0-365)
                        int tm_isdst;    夏令时标记
                    }
                    clock_t clock(void);    放回程序执行后占用的处理器时间,单位为秒。
                    time_t time(time_t *tp);    放回当前日期
                    double difftime(time_t time2, time_t time1);    time2-time1的值(秒),
                    time_t mktime(struct tm *tp);   将tm类型时间转换为time_t类型
                    char *asctime(const struct tm *tp);
                        将tm转换为字符串形式,Sun Jan 3 15:14:13 1988\n\0
                    char *ctime(const time_t *tp);  将time_t转换为当地时间,格式如上。
                    struct tm *gmtime(const time_t *tp);  将time_t转换为协调时间时UCT
                    struct tm *localtime(const time_t *tp);  将time_t类型转换为tm类型
                    size_t strftime(char *s, size_t smax, const char *fmt, 
                        const struct tm*tp);   
                }
                
                <limits.h>{一些常量(不同环境可能不同,这里列出最小值)
                    数据类型常量:
                    CHAR_BIT    8
                    CHAR_MAX    255或+127
                    CHAR_MIN    0或-127
                    INT_MAX     32767
                    INT_MIN     -32767
                    LONG_BIT    32
                    LONG_MAX    2147483647
                    LONG_MIN    -2147483647
                    SCHAR_MAX   +127
                    SCHAR_MIN   -127
                    SHRT_MAX    +32767
                    SHRT_MIN    -32767
                    UCHAR_MAX   255
                    UINT_MAX    65535
                    ULONG_MAX   4294967295
                    USHRT_MAX   65535
                }
                
                <float.h>{浮点算术运算相关常量(不同环境可能不同,这里列出最小值)
                  float类型相关的常量:
                    FLT_RADIX   2           指数表示的基数,如2、16
                    FLT_ROUNDS
                    FLT_DIG     6           表示精度
                    FLT_EPSILON 1E-5        最小的数,满足1.0+x != 1.0
                    FLT_MANT_DIG            
                    FLT_MAX     1E+37       最大的浮点数
                    FLT_MAX_EXP
                    FLT_MIN     1E-37
                    FLT_MIN_EXP
                    
                  double相关的常量:
                    DBL_DIG     10          表示精度
                    DBL_EPSILON 1E-9
                    DBL_MANT_DIG
                    DBL_MAX     1E+37       最大的浮点数
                    DBL_MAX_EXP
                    DBL_MIN     1E-37
                    DBL_MIN_EXP
                }
               

猜你喜欢

转载自blog.csdn.net/u013845608/article/details/85617773
2.2