C语言标准库(了解)

[+]

概述

      C语言函数手册也称为C标准库。C标准库由在15个头文件中声明的函数、类型定义和宏组成,每个头文件都代表了一定范围的编程功能。有人说,C标准库可以分为 3 组,如何正确并熟练的使用它们,可以相应的可区分出 3 个层次的程序员:

合格程序员:<stdio.h><ctype.h><stdlib.h><string.h>

熟练程序员:<assert.h><limits.h><stddef.h><time.h>

优秀程序员:<float.h><math.h><error.h><locale.h><setjmp.h><signal.h><stdarg.h>

一,<math.h>里的数学计算公式介绍   

    1、三角函数 
    double sin (double);正弦 
    double cos (double);余弦 
    double tan (double);正切 
   2 、反三角函数 
    double asin (double); 结果介于[-PI/2, PI/2] 
    double acos (double); 结果介于[0, PI] 
    double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] 
    double atan2 (double, double); 反正切(整圆值), 结果介于[-PI, PI] (y/x的反正切值)
   3 、双曲三角函数 
    double sinh (double); 
    double cosh (double); 
    double tanh (double); 
   4 、指数与对数 
    double exp (double);求取自然数e的幂 (以e为底的x次方值)
    double sqrt (double);开平方 
    double log (double); 以e为底的对数 
    double log10 (double);以10为底的对数 
    double pow(double x, double y);计算以x为底数的y次幂 
    float powf(float x, float y); 功能与pow一致,只是输入与输出皆为浮点数 
         double pow10(double x, double y);求10的x次方(次幂)
  5 、取整 
   double ceil (double); 取上整 (即求不小于某个数的最小整数)
   double floor (double); 取下整 (即求不大于某个数的最大整数)
  6、绝对值 
    double fabs (double);求绝对值 
    double cabs(struct complex znum) ;求复数的绝对值 
         int        abs(int);      求整数的绝对值
         long      labs(long);  取长整型绝对值7 、标准化浮点数 
   double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] ) 
   double ldexp (double x, int p); 与frexp相反, 已知x, p求f 
 7 、取整与取余 
  double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 
  double fmod (double, double); 返回两参数相除的余数 (对浮点数取模)
 8 、其他 
  double hypot(double x, double y);已知直角三角形两个直角边长度,求斜边长度 
  double ldexp(double x, int exponent);计算x*(2的exponent次幂) 
  double poly(double x, int degree, double coeffs [] );计算多项式 
       double round( double); 四舍五入取整
       double fmax(double, double);求最大值
       double min(double,double);求最小值
       int        rand(void); 求随机数

注意事项:
没有现成的cot三角函数,可以使用tan(PI/2-x)来实现
强调一点,1-3类 传参都是针对以弧度表示的数值,非角度表示的数值。
对于一般的对数求解,考虑利用数学上的对数转换来实现。
关于fmod:考虑到%只适用与整型数据,这里提出一个专门针对实型数据的取余运算的函数。
int rand(void) 用这函数的时候记得要给随机种子哦,要不得出的不是真正的随机数.产生随机种子可以用srand((unsigned int)time(NULL));这就是由时间产生的随机种子了。

二,<assert.h>函数

    assert.h C标准库的头文件中提供了一个宏称为断言可以用于验证程序的假设,如果这个假设是错误的,并打印诊断消息。

    以下是唯一的函数定义在头assert.h:  

    void assert(int expression)

    这实际上是一个宏,而不是一个函数,它可以被用来添加在C程序诊断。expression 相当于 if里面的表达式

示例:

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. - (void)viewDidLoad {  
  2.    [super viewDidLoad];  
  3.    int i =1;  
  4.    assert(i>1);  
  5.    NSLog(@"打印出i的值是:%d",i);  

打印结果:

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. Assertion failed: (i>1), function -[ViewController viewDidLoad], file /Users/admin/Desktop/xcodeCode/math.h/math.h/ViewController.m, line 20.  

注意:

       * assert是一个宏,只在debug版本中起作用,在release版本中,该语句是不起任何作用的。()   

       * 当assert诊断失败后,assert会向stderr打印消息。从图1可以看出,assert诊断信息的表达形式是:Assertion failed: 表达式(expression),程序(file) 出错的文件名(file name), 行号(line nnn)。然后,asset会调用abort中断函数的执行,源代码的文件名(The Source filename)和行号(line number)定义在预处理宏(preprocessor macros)__FILE__ 和 __LINE__中

      *在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,

示例代码如下:

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:12px;">      #include <stdio.h>  
  2.       #define NDEBUG  
  3.       #include <assert.h></span>  

      *NSAssert 在 Objective - c 里面也是宏,他的做用跟 assert()几乎一样 ,release 模式下就 什么也不执行 ,debug 就会 断言 。(release模式下 xcode定义了一个宏 NS_BLOCK_ASSERTIONS ,这个 宏 跟 c 里面的 NDEBUG 异曲同工)
      NSAssert(condition,desc) , 在 debug模式下 被翻译成

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:12px;">      if (!(condition)) {   
  2.          [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd   
  3.                                                                                      object:self file:[NSString stringWithUTF8String:__FILE__]   
  4.                                                                             lineNumber:__LINE__ description:(desc), ##__VA_ARGS__];   
  5.        }</span>  

        参数:condition是条件表达式,值为YES或NO;

                desc为异常描述,通常为NSString。

        当conditon为YES时程序继续运行,为NO时,则抛出带有desc描述的异常信息

三,<ctype.h>函数

ctype.h是C标准函数库中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特定的字符类别,如字母字符、控制字符等等。既支持单字节(Byte)字符,也支持宽字符。

*库函数
以下是在头文件ctype.h中定义的函数:
S.N.函数及说明
1      int isalnum(int c)
        该函数检查传递的字符是否是字母数字。
2int isalpha(int c)
        该函数是否传递的字符是字母。
3int iscntrl(int c)
        该函数是否传递的字符是控制字符。
4int isdigit(int c)
        该函数是否传递的字符是十进制数字。
5int isgraph(int c)
        该函数是否传递的字符的图形表示,使用的语言环境。
6int islower(int c)
        该函数检查传递的字符是否是小写字母。
7int isprint(int c)
        该函数检查传递的字符是否是可打印的。
8int ispunct(int c)
        该函数检查传递的字符是否是标点符号。
9int isspace(int c)
        该函数检查传递的字符是否是空白。
10int isupper(int c)
        该函数检查传递的字符是否是大写字母。
11int isxdigit(int c)
       该函数检查传递的字符是否是十六进制数字。该库还包含两个转换函数,也接受并返回一个“整数”
S.N.函数及说明
1int tolower(int c)
       这个函数转换大写字母为小写。
2int toupper(int c)
       这个函数小写字母转换为大写。 字符类

示例和详情请查看百度百科

四,<errno.h>函数

errno.h中的C标准库的头文件中定义的整数变量errno,这是由系统调用和一些库函数的错误事件指明什么地方出了错。该宏展开为int类型的修改的左值,因此它可以同时读取和修改程序。
errno设置为零,在程序启动时,标准C库中的某些功能修改它的值到一些异于零值,某些类型的错误信号。您还可以修改它的值,或在方便时归零。
errno.h中头文件还定义了一个宏表示不同的错误代码,而应扩大到int类型的整数常量表达式列表。
*库宏
以下是在头errno.h中定义的宏: 
S.N.宏及说明
1extern int  errno
        这是宏集合系统调用和一些库函数的错误事件指明什么地方出了错。
2EDOM Domain Error
        这个宏域发生的错误,如果输入参数是外域的数学函数的定义,并设置errno为EDOM。
3ERANGE Range Error
        这个宏代表的一系列发生的错误,如果输入参数的范围之外的数学函数的定义,并且errno被设置为ERANGE。

五,float.h函数

float.h中的C标准库的头文件包含了一组浮点值相关的各种平台相关的常数。这些常量是由ANSI C允许更多的可移植程序提出。之前检查所有的常量,它是很好的理解浮点数是由以下四个元素:
组件 组件说明
S sign ( +/- )
b base or radix of the exponent representation, 2 for binary, 10 for decimal, 16 for hexadecimal, and so on...
e exponent, an integer between a minimum emin and a maximum emax.
p precision, the number of base-b digits in the significand
上述4个组成部分的基础上,一个浮点将它的值,如下所示:

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. f被定义的宏编辑  
  2. double  
  3. DBL_DIG double  
  4. //小数点后面精确的位数  
  5. DBL_EPSILON  
  6. //小的正数 ,double的0跨度值  
  7. DBL_MANT_DIG  
  8. //尾数中的位数  
  9. DBL_MAX  
  10. //最大值  
  11. DBL_MAX_10_EXP  
  12. //最大10进制指数  
  13. DBL_MAX_EXP  
  14. //最大2进制指数  
  15. DBL_MIN  
  16. //最小值  
  17. DBL_MIN_10_EXP  
  18. //最小10进制指数  
  19. DBL_MIN_EXP  
  20. //最小2进制指数  
  21. float  
  22. FLT_DIG  
  23. float//小数点后面精确的位数  
  24. FLT_EPSILON  
  25. //小的正数,float的0跨度值  
  26. FLT_MANT_DIG  
  27. //尾数中的位数  
  28. FLT_MAX  
  29. //最大值  
  30. FLT_MAX_10_EXP  
  31. //最大10进制指数  
  32. FLT_MAX_EXP  
  33. //最大2进制指数  
  34. FLT_MIN  
  35. //最小值  
  36. FLT_MIN_10_EXP  
  37. //最小10进制指数  
  38. FLT_MIN_EXP  
  39. //最小2进制指数  
  40. FLT_RADIX  
  41. //进制基数  
  42. FLT_ROUNDS  
  43. //加法舍入  
  44. long double  
  45. LDBL_DIG  
  46. long double//小数点后面精确的位数  
  47. LDBL_EPSILON  
  48. //小的正数,long double的0跨度值  
  49. LDBL_MANT_DIG  
  50. //尾数中的位数  
  51. LDBL_MAX  
  52. //最大值  
  53. LDBL_MAX_10_EXP  
  54. //最大10进制指数  
  55. LDBL_MAX_EXP  
  56. //最大2进制指数  
  57. LDBL_MIN  
  58. //最小值  
  59. LDBL_MIN_10_EXP  
  60. //最小10进制指数  
  61. LDBL_MIN_EXP  
  62. //最小2进制指数 [1]   
These macros define the minimum floating-yiibai value.. 例子
下面的例子演示了如何使用几个在float.h文件中定义的常量。

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:12px;">#include <stdio.h>  
  2. #include <float.h>  
  3. int main(){  
  4.    printf("The maximum value of float = %.10e  
  5. ", FLT_MAX);  
  6.    printf("The minimum value of float = %.10e  
  7. ", FLT_MIN);  
  8.   
  9.    printf("The number of digits in the number = %.10e  
  10. ", FLT_MANT_DIG);  
  11. }</span>  
让我们编译和运行上面的程序,这将产生以下结果:
[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. The maximum value of float = 3.4028234664e+38  
  2. The minimum value of float = 1.1754943508e-38  
  3. The number of digits in the number = 7.2996655210e-312  

六,limits.h函数

limits.h头中确定各种变量类型的各种属性。在这个头中定义的宏限制的char,int和long类型,如各种变量的值。
这些限制指定一个变量,无法存储任何值超越这些限制,例如一个无符号的字符最多可以存储的最大值为255。
*库宏
下面的值是特定于实现定义#define指令,但这些数值可能没有任何比这里给出更低(小)。
                    值         描述
CHAR_BIT    8                定义了一个字节中的比特数。
SCHAR_MIN -127        定义最小值签署的字符。
SCHAR_MAX  127        定义最大值签署的字符。
UCHAR_MAX  255        定义unsigned char类型的最大值。
CHAR_MIN   0                char类型定义最小值,它的值将等于SCHAR_MIN如果char表示负值,否则为零。
CHAR_MAX 127                定义char类型的值,它的值将等于SCHAR_MAX的char代表负值,否则UCHAR_MAX,
MB_LEN_MAX  1                定义的最大字节数多字节字符。
SHRT_MIN-32767        定义一个短整型的最小值。
SHRT_MAX+32767        定义一个短整型的最大值。
USHRT_MAX65535        定义一个无符号的短整型的最大值。
INT_MIN       -32767        定义类型为int的最小值。
INT_MAX+32767        定义一个int的最大值。
UINT_MAX65535        定义一个unsigned int的最大值。
LONG_MIN-2147483647定义一个长整型的最小值。
LONG_MAX+2147483647定义一个长整型的最大值。
ULONG_MAX4294967295定义一个无符号长整型的最大值。 例子
下面的例子显示的几个常量定义在limit.h文件的用法。

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include <stdio.h>  
  2. #include <limits.h>  
  3. int main(){  
  4.    printf("The number of bits in a byte %d  
  5. ", CHAR_BIT);  
  6.    printf("The minimum value of SIGNED CHAR = %d  
  7. ", SCHAR_MIN);  
  8.    printf("The maximum value of SIGNED CHAR = %d  
  9. ", SCHAR_MAX);  
  10.    printf("The maximum value of UNSIGNED CHAR = %d  
  11. ", UCHAR_MAX);  
  12.    printf("The minimum value of SHORT INT = %d  
  13. ", SHRT_MIN);  
  14.    printf("The maximum value of SHORT INT = %d  
  15. ", SHRT_MAX);   
  16.    printf("The minimum value of INT = %d  
  17. ", INT_MIN);  
  18.    printf("The maximum value of INT = %d  
  19. ", INT_MAX);  
  20.    printf("The minimum value of CHAR = %d  
  21. ", CHAR_MIN);  
  22.    printf("The maximum value of CHAR = %d  
  23. ", CHAR_MAX);  
  24.    printf("The minimum value of LONG = %ld  
  25. ", LONG_MIN);  
  26.    printf("The maximum value of LONG = %ld  
  27. ", LONG_MAX);   
  28.    return(0);  
  29. }  
让我们编译和运行上面的程序,这将产生以下结果:
[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. The number of bits in a byte 8  
  2. The minimum value of SIGNED CHAR = -128  
  3. The maximum value of SIGNED CHAR = 127  
  4. The maximum value of UNSIGNED CHAR = 255  
  5. The minimum value of SHORT INT = -32768  
  6. The maximum value of SHORT INT = 32767  
  7. The minimum value of INT = -32768  
  8. The maximum value of INT = 32767  
  9. The minimum value of CHAR = -128  
  10. The maximum value of CHAR = 127  
  11. The minimum value of LONG = -2147483648  
  12. The maximum value of LONG = 2147483647  

七,locale.h函数

locale.h头文件定义了特定的位置设置,如日期格式和货币符号。有一个重要的结构struct lconv和两个重要的函数,下面列出一些宏定义。
*库宏
以下是在标头中定义的宏,这些宏将被用在下面列出的两个函数:

S.N.  宏及说明
1 LC_ALL
   Set everything.
2 LC_COLLATE
   Affects strcoll and strxfrm functions.
3 LC_CTYPE
   Affects all character functions.
4 LC_MONETARY
   Affects the monetary information provided by localeconv function.
5 LC_NUMERIC
   Affects decimal-yiibai formatting and the information provided by localeconv function.
6 LC_TIME
   Affects the strftime function. 库函数

以下是头locale.h中定义的函数:

S.N.  功能及说明
1 char *setlocale(int category, const char *locale)
       设置或读取位置相关的信息。
2 struct lconv *localeconv(void)
       设置或读取位置相关的信息。 库结构 
typedef struct {
   char *decimal_yiibai;
   char *thousands_sep;
   char *grouping;
   char *int_curr_symbol;
   char *currency_symbol;
   char *mon_decimal_yiibai;
   char *mon_thousands_sep;
   char *mon_grouping;
   char *positive_sign;
   char *negative_sign;
   char int_frac_digits;
   char frac_digits;
   char p_cs_precedes;
   char p_sep_by_space;
   char n_cs_precedes;
   char n_sep_by_space;
   char p_sign_posn;
   char n_sign_posn;
} iconv

八,setjmp.h函数

setjmp.h 头定义宏的setjmp(),一个函数longjmp()和一个可变typejmp_buf的绕过正常的函数调用和返回学科。
*库变量
以下是在头setjmp.h中定义的变量类型:
S.N.变量和说明
1jmp_buf 
这是一个数组类型用于宏调用setjmp()和longjmp的()函数持有信息。 库宏
只有一个在这个库中定义的宏:

S.N.宏观与说明
1int setjmp(jmp_buf environment)
        此宏保存当前的环境下入变量的环境中由函数longjmp()以供以后使用。如果该宏返回直接从宏调用,它返回零,但如果它返回的longjmp()函数调用,则返回一个非零值。 库函数
以下是定义在头setjmp.h中只有一个函数:

S.N.函数及说明
1void longjmp(jmp_buf environment, int value)
       此函数恢复由最近一次调用setjmp()调用到jmp_buf参数与相应的程序在同一调用宏保存的环境。

九,signal.h函数

signal.h头文件中定义变量类型sig_atomic_t,两个函数调用和几个宏处理程序的执行过程中不同的信号报告。
*库变量

以下是在头signal.h中定义的变量类型:

S.N.  变量和说明
1 sig_atomic_t 
这是int型,并用作一个信号处理程序中的变量。这是一个可以被访问的原子实体,异步信号,即使在存在一个对象,该对象的组成不同。 库宏
以下是在头signal.h中定义的宏,这些宏将被用在下面列出的两个函数。信号函数SIG_宏定义信号。
S.N. 宏与说明
1 SIG_DFL
   默认信号处理程序
2 SIG_ERR
  表示一个信号错误。
3 SIG_IGN
  信号忽视。
  SIG宏被用来表示在下列条件下的信号数
S.N. 宏与说明
1 SIGABRT
   程序异常终止
2 SIGFPE
   除数为零的浮点错误。
3 SIGILL
   非法操作。
4 SIGINT
   中断信号,如CTRL-C。
5 SIGSEGV
   访问无效存储如区段违规。
6 SIGTERM
   终止请求。 

*库函数
 以下是在头signal.h中定义的函数:
S.N.函数及说明
void (*signal(int sig, void (*func)(int)))(int)  此功能设置函数来处理信号,即。信号处理程序。
int raise(int sig)       该函数会导致产生信号sig。信号参数是与SIG宏兼容。

十,<stdarg.h>函数

stdarg.h头文件定义了一个变量va_list类型和三个宏,可以用来获取一个函数的参数的个数,即不知道可变数目的参数。
可变参数函数定义的参数列表的末尾的省略号(...)。
*库变量

以下是在头文件stdarg.h中定义的变量类型:
S.N.变量和说明
1   va_list 
       这是一种适合于保持的信息所需要的3个宏 va_start(), va_arg() 和 va_end(). 库宏

以下是在头文件stdarg.h中定义的宏:
S.N. 宏与说明
1 void va_start(va_list ap, last_arg)
      此宏初始化就根据va_arg和va_end宏要使用的变量。last_arg是最后一个已知的固定参数被传递给函数,即。的说法前省略号。
2 type va_arg(va_list ap, type)
      这个宏检索函数型的参数列表中的下一个参数type.
3 void va_end(va_list ap)
      这个宏允许使用va_start宏返回一个函数变量参数。 va_end中之前没有调用的函数返回的结果是不确定的。

十一,<stddef.h>函数

stddef.h 头文件定义了各种变量的类型和宏。许多这些定义也出现在其他头。
*库变量
以下是在头stddef.h的定义的变量类型:
S.N. 变量和说明
1    ptrdiff_t
       这是有符号整数类型,是两个指针相减的结果。
2    size_t 
       这是一个无符号整数类型的sizeof关键字的结果。
3    wchar_t 
       这是一个不可分割的宽字符常量的大小不同的。
*库宏
以下是在头stddef.h的宏定义:
S.N.宏与说明
1    NULL
       这个宏是一个空指针常量的值。
2    offsetof(type, member-designator)
       这个结果一个常数size_t类型是偏移量(以字节为单位)的结构构件的结构从一开始的整数。构件由下式给出成员标志符,是由于在不同的结构的名称。

十二,<stdio.h>函数

stdio.h头定义了三个变量的类型,几个宏及各种功能进行输入和输出。
*库变量
以下是在头stdio.h中定义的变量类型:
S.N. 变量和说明
1  size_t 
   这是一个无符号整数类型 sizeof关键字的结果。
2  FILE 
   这是一个对象的类型,适合用于存储信息的一个文件流。
3  fpos_t 
   这是一个对象类型适用于存储在一个文件中的任何位置。 库宏

以下是在头stdio.h中定义的宏:
S.N. 宏与说明
1   NULL
     这个宏是一个空指针常量的值。
2 _IOFBF, _IOLBF and _IONBF 
     这些都是宏扩大整型常量表达式具有鲜明的值和适合使用setvbuf函数的第三个参数。
3 BUFSIZ
     这个宏是一个整数,它表示函数setbuf函数所使用的缓冲区的大小。
4 EOFM 
     此宏是一个负整数,表示一个结束-已到达文件结尾。
5 FOPEN_MAX 
     此宏是一个整数,代表文件的最大数目,该系统可以保证,可以同时打开。
6 FILENAME_MAX 
     这个宏是一个整数,表示一个字符数组,适合持有时间最长的可能的文件名长度最长。如果实现没有任何限制,那么这个值应该是推荐的最大值。
7 L_tmpnam 
     这个宏是一个整数,表示适合举行由tmpnam函数创建的临时文件名可能的最长的一个char数组的长度最长。
8 SEEK_CUR, SEEK_END, and SEEK_SET 
     这些宏用于的fseek 函数定位在一个文件中的不同位置。
9 TMP_MAX 
     这个宏是唯一的文件名的功能使用tmpnam可以生成的最大数量。
10 stderr, stdin, and stdout 
      这些宏的文件类型对应的标准误差,标准输入,标准输出流的指针。 库函数

以下是在头stdio.h中定义的函数:

S.N.  函数及说明
1 void clearerr(FILE *stream)
      Clears the end-of-file and error indicators for the given stream.
2 int fclose(FILE *stream)
       Closes the stream. All buffers are flushed.
3 int feof(FILE *stream)
       Tests the end-of-file indicator for the given stream.
4 int ferror(FILE *stream)
       Tests the error indicator for the given stream.
5 int fflush(FILE *stream)
       Flushes the output buffer of a stream.
6 int fgetpos(FILE *stream, fpos_t *pos)
       Gets the current file position of the stream and writes it to pos.
7 FILE *fopen(const char *filename, const char *mode)
       Opens the filename yiibaied to by filename using the given mode.
8 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
       Reads data from the given stream into the array yiibaied to by ptr.
9 FILE *freopen(const char *filename, const char *mode, FILE *stream)
       Associates a new filename with the given open stream and same time closing the old file in stream.
10 int fseek(FILE *stream, long int offset, int whence)
       Sets the file position of the stream to the given offset. The argument offset signifies the number of bytes to seek from the given whence position.
11 int fsetpos(FILE *stream, const fpos_t *pos)
       设置到给定位置的给定的流文件中的位置。参数pos 是由函数的fgetpos 给定的位置。
12 long int ftell(FILE *stream)
       返回给定流的当前文件位置。
13 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
       Writes data from the array yiibaied to by ptr to the given stream.
14 int remove(const char *filename)
        Deletes the given filename so that it is no longer accessible.
15 int rename(const char *old_filename, const char *new_filename)
        Causes the filename referred to by old_filename to be changed to new_filename.
16 void rewind(FILE *stream)
        Sets the file position to the beginning of the file of the given stream.
17 void setbuf(FILE *stream, char *buffer)
         Defines how a stream should be buffered.
18 int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
         Another function to define how a stream should be buffered.
19 FILE *tmpfile(void)
         Creates a temporary file in binary update mode (wb+).
20 char *tmpnam(char *str)
         Generates and returns a valid temporary filename which does not exist.
21 int fprintf(FILE *stream, const char *format, ...)
         Sends formatted output to a stream.
22 int printf(const char *format, ...)
         Sends formatted output to stdout.
23 int sprintf(char *str, const char *format, ...)
         Sends formatted output to a string.
24 int vfprintf(FILE *stream, const char *format, va_list arg)
         Sends formatted output to a stream using an argument list.
25 int vprintf(const char *format, va_list arg)
         Sends formatted output to stdout using an argument list.
26 int vsprintf(char *str, const char *format, va_list arg)
         Sends formatted output to a string using an argument list.
27 int fscanf(FILE *stream, const char *format, ...)
         Reads formatted input from a stream.
28 int scanf(const char *format, ...)
         Reads formatted input from stdin.
29 int sscanf(const char *str, const char *format, ...)
         Reads formatted input from a string.
30 int fgetc(FILE *stream)
         Gets the next character (an unsigned char) from the specified stream and advances the position indicator for the stream.
31 char *fgets(char *str, int n, FILE *stream)
         Reads a line from the specified stream and stores it into the string yiibaied to by str. It stops when either (n-1) characters are read, the newline character is read, or the end-of-file is reached, whichever comes first.
32 int fputc(int char, FILE *stream)
        Writes a character (an unsigned char) specified by the argument char to the specified stream and advances the position indicator for the stream.
33 int fputs(const char *str, FILE *stream)
        Writes a string to the specified stream up to but not including the null character.
34 int getc(FILE *stream)
        获取下一个字符(unsigned char类型)从指定的流,并将流的指针位置。
35 int getchar(void)
        从标准输入获取一个字符(unsigned char类型)。
36 char *gets(char *str)
        从标准输入读取一行,并将其存储到由str指向的字符串。它时停止读取换行符或文件结束时达成,以先到为准。
37 int putc(int char, FILE *stream)
        写入字符到指定的流,并将流的指针位置的参数指定一个字符(unsigned char类型)。
38 int putchar(int char)
        写一个字符(unsigned char类型)的参数指定的字符输出到stdout。
39 int puts(const char *str)
        将一个字符串写入到stdout,但不包括空字符。一个换行符被追加到输出。
40 int ungetc(int char, FILE *stream)
        将字符的字符(unsigned char类型)到指定的流,这是读取的下一字符。
41 void perror(const char *str)
        打印一个描述性的错误消息到stderr。首先打印字符串str接着一个冒号,然后是一个空格。

十三,<stdlib.h>函数

stdlib.h中头文件定义了四个变量类型,用于执行一般函数的几个宏和各类函数。
*库变量
以下是在头文件stdlib.h中定义的变量类型:
S.N. 变量和说明
1 size_t 
       这是一个无符号整数类型的sizeof关键字的结果。
2 wchar_t 
       这是一个整数类型的宽字符常量的大小。
3 div_t 
       这是结构的div函数返回。
4 ldiv_t 
       这是由 ldiv 函数返回的结构。 库宏

以下是在头文件stdlib.h中定义的宏:

S.N.  宏与说明
1 NULL
        这个宏是一个空指针常量的值。
2 EXIT_FAILURE
       这是退出功能,在发生故障的情况下,返回的值。
3 EXIT_SUCCESS
       这是exit函数返回成功的情况下的值。
4 RAND_MAX 
       这个宏是由rand函数传回的最大值。
5 MB_CUR_MAX 
       这个宏不能大于MB_LEN_MAX的多字节字符集的最大字节数。 库函数

以下是在头stdio.h中定义的函数:

S.N. 功能及说明

1 double atof(const char *str)
        转换参数str指向的字符串到浮点数(double类型)。
2 int atoi(const char *str)
        转换参数str指向的字符串为整数(int型)。
3 long int atol(const char *str)
        转换字符串参数str指向一个长整型(类型为long int)
4 double strtod(const char *str, char **endptr)
        转换参数str指向的字符串到浮点数(double类型)。
5 long int strtol(const char *str, char **endptr, int base)
        字符串转换成一个长整型(类型为long int)参数str指向。
6 unsigned long int strtoul(const char *str, char **endptr, int base)
        转换字符串参数str指向一个无符号长整型(unsigned long型整数)。
7 void *calloc(size_t nitems, size_t size)
        分配请求的内存,并返回一个指向它的指针。
8 void free(void *ptr
        calloc,malloc或realloc调用先前分配的回收内存。
9 void *malloc(size_t size)
        Allocates the requested memory and returns a yiibaier to it.
10 void *realloc(void *ptr, size_t size)
        尝试调整的内存块的大小由ptr指向先前调用malloc或calloc的分配。
11 void abort(void)
        导致程序异常终止。
12 int atexit(void (*func)(void))
        导致指定的函数功能,当程序正常终止时,被调用。
13 void exit(int status)
        导致正常程序终止。
14 char *getenv(const char *name)
        name所指向环境字符串的搜索,并返回相关的字符串的值。
15 int system(const char *string)
        字符串指定的命令被传递到主机环境中,要执行的命令处理器。
16 void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))
        执行二进制搜索。
17 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
        对数组排序
18 int abs(int x)
        返回x的绝对值。
19 div_t div(int numer, int denom)
        数(分子numer)除以分母(分母denom)。
20 long int labs(long int x)
        返回x的绝对值。
21 ldiv_t ldiv(long int numer, long int denom)
        数(分母denom)除以分母(分子numer)。
22 int rand(void)
        返回一个取值范围为0到RAND_MAX之间的伪随机数。
23 void srand(unsigned int seed)
        这个函数使用rand函数随机数生成器的种子。
24 int mblen(const char *str, size_t n)
        返回参数str指向一个多字节字符的长度。
25 size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)
        转换pwcs 指向的数组参数str所指向的多字节字符的字符串。 
26 int mbtowc(whcar_t *pwc, const char *str, size_t n)
        检查参数str所指向的多字节字符。
27 size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)
        存储在数组pwcs  多字节字符并存入字符串str中的代码转换。
28 int wctomb(char *str, wchar_t wchar)
        检查参数wchar多字节字符对应的代码。 

十四,<string.h>函数

string.h 头定义了一个变量的类型,操作字符数组的一个宏观和各种功能。
*库变量
以下是在头string.h中定义的变量类型:
S.N. 变量和说明
1 size_t 
这是一个无符号整数类型的sizeof关键字的结果。 库宏
以下是在头string.h中定义的宏:

S.N. 宏观与说明
1 NULL
这个宏是一个空指针常量的值。 库函数
以下是头string.h中定义的功能:

S.N. 函数及说明
1 void *memchr(const void *str, int c, size_t n)
        搜索第一次出现的字符c(unsigned char类型)的前n个字节的字符串参数str指向。
2 int memcmp(const void *str1, const void *str2, size_t n)
        比较str1和str2的前n个字节。
3 void *memcpy(void *dest, const void *src, size_t n)
       从src复制n个字符到dest。
4 void *memmove(void *dest, const void *src, size_t n)
       另一个函数来复制n个字符到str1。
5 void *memset(void *str, int c, size_t n)
       复制字符c(unsigned char类型)的前n个字符的字符串参数str指向。
6 char *strcat(char *dest, const char *src)
       追加src指向的字符串到dest指向的字符串的结束。
7 char *strncat(char *dest, const char *src, size_t n)
       追加src指向字符串结尾的字符串指向dest中最多n个字符长。
8 char *strchr(const char *str, int c)
       搜索第一次出现的字符串中的字符c(unsigned char类型)参数str指向。
9 int strcmp(const char *str1, const char *str2)
       比较字符串str1指向指向的字符串str2。
10 int strncmp(const char *str1, const char *str2, size_t n)
       str1和str2的前n个字节相比。
11 int strcoll(const char *str1, const char *str2)
       比较字符串str1的STR2。其结果是依赖于位置LC_COLLATE设置。
12 char *strcpy(char *dest, const char *src)
      复制字符串src指向到dest。
13 char *strncpy(char *dest, const char *src, size_t n)
      副本最多n个字符的字符串src指向到dest。
14 size_t strcspn(const char *str1, const char *str2)
      计算str1的起始段的长度完全包含在str2中的字符。
15 char *strerror(int errnum)
      搜索一个内部数组的错误编号差错编号,并返回一个指向一个错误消息字符串。
16 size_t strlen(const char *str)
      计算但不包括终止空字符的字符串str的长度。
17 char *strpbrk(const char *str1, const char *str2)
      查找字符串str1在str2中指定的任何字符相匹配的第一个字符。
18 char *strrchr(const char *str, int c)
      参数str指向的字符串中的字符c(unsigned char类型)最后一次出现的搜索。
19 size_t strspn(const char *str1, const char *str2)
      计算str1中的初始段完全包含在str2中的字符的长度。
20 char *strstr(const char *haystack, const char *needle)
      查找第一次出现的整个字符串针(不包括终止空字符)出现在字符串haystack中。
21 char *strtok(char *str, const char *delim)
      中断字符串str分隔分离成一系列的记号。
22 size_t strxfrm(char *dest, const char *src, size_t n)
      转换前n个字符的字符串src到校报的语言环境和将它们放置字符串dest。

十五,<time.h>函数

time.h 头定义了四个变量类型,两个宏和用于操作的日期和时间的各种功能。
*库变量
 以下是在头time.h中定义的变量类型:
 S.N.变量和说明
 1size_t 
        这是一个无符号整数类型的sizeof关键字的结果。
 2clock_t 
        这是一种适合用于存储处理器的时间。
 3time_t is 
        这是一种适合用于存储日历时间。
 4struct tm 
        这是一个结构,用于保存的时间和日期。
tm结构具有下列定义:
struct tm {
   int tm_sec;         /* seconds,  range 0 to 59          */
   int tm_min;         /* minutes, range 0 to 59           */
   int tm_hour;        /* hours, range 0 to 23             */
   int tm_mday;        /* day of the month, range 1 to 31  */
   int tm_mon;         /* month, range 0 to 11             */
   int tm_year;        /* The number of years since 1900   */
   int tm_wday;        /* day of the week, range 0 to 6    */
   int tm_yday;        /* day in the year, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */
};
*库宏
以下是在头time.h中定义的宏:
S.N. 宏观与说明
1NULL
        这个宏是一个空指针常量的值。
2CLOCKS_PER_SEC 
        这个宏表示每秒的处理器时钟周期的数目。 库函数

以下是在头time.h中定义的函数:
S.N. 函数及说明
1 char *asctime(const struct tm *timeptr)
       将指针返回到一个字符串,它表示结构timeptr 日期和时间。
2 clock_t clock(void)
       返回处理器的时钟使用,因为一个实现定义的时代的开始(通常是程序开头)。
3 char *ctime(const time_t *timer)
       返回一个字符串,代表localtime基于参数定时器。
4 double difftime(time_t time1, time_t time2)
       返回秒时间1和时间2(时间1时间2)之间的差值。
5 struct tm *gmtime(const time_t *timer)
       定时器的值被分解成结构tm表示以协调通用时间(UTC),也被称为格林威治标准时间(GMT)。
6 struct tm *localtime(const time_t *timer)
       定时器的值被分解成结构tm表示本地时区。
7 time_t mktime(struct tm *timeptr)
       结构转换所指出timeptr成一个time_t值,根据本地时区。
8 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
       格式结构timeptr根据定义格式并存储到str格式规则表示的时间。
9 time_t time(time_t *timer)
       计算当前压延时间,并将其编码成time_t的格式。

  • 13
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值