概述
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里面的表达式
示例:
- (void)viewDidLoad {
[super viewDidLoad];
int i =1;
assert(i>1);
NSLog(@"打印出i的值是:%d",i);
}
打印结果:
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调用,
示例代码如下:
#include <stdio.h>
#define NDEBUG
#include <assert.h>
* NSAssert 在 Objective - c 里面也是宏,他的做用跟 assert()几乎一样 ,release 模式下就 什么也不执行 ,debug 就会 断言 。(release模式下 xcode定义了一个宏 NS_BLOCK_ASSERTIONS ,这个 宏 跟 c 里面的 NDEBUG 异曲同工)
NSAssert(condition,desc) , 在 debug模式下 被翻译成
if (!(condition)) {
[[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd
object:self
file:[NSString stringWithUTF8String:__FILE__]
lineNumber:__LINE__
description:(desc), ##__VA_ARGS__];
}
参数:* 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)
该函数检查传递的字符是否是字母或数字,若是则返回非零,否则返回零。
原型:extern int isalnum(int c);
用法:#include <ctype.h>/* 包含 <ctype.h> */
功能:判断字符变量c是否为字母或数字
说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。
程序例
#include <syslib.h>/* 包含 <ctype.h> */
#include <ctype.h> /* 包含 <ctype.h> */
main()/* “主”函数 */
{
int c; /* 整数 c; */
clrscr(); // 清屏() 外语全称加缩写:CLeaR SCReen
c='a';/* 变量赋值 */
printf("%c:%s\n",c,isalnum(c)?"yes":"no");/* “格式输出”(外语全称加缩写:printf) */
c='7';/* 变量赋值 */
printf("%c:%s\n",c,isalnum(c)?"yes":"no");
c='@';/* 变量赋值 */
printf("%c:%s\n",c,isalnum(c)?"yes":"no");
getchar();/* 获取字符();*/
return 0;/* 返回 零; 正常退出 */
}
2> int isalpha(int c)
该函数是否传递的字符是字母。
3> int iscntrl(int c)
该函数是否传递的字符是控制字符。
4> int isdigit(int c)
该函数是否传递的字符是十进制数字。
5> int isgraph(int c)
该函数是否传递的字符的图形表示,使用的语言环境。
6> int islower(int c)
该函数检查传递的字符是否是小写字母。
7> int isprint(int c)
该函数检查传递的字符是否是可打印的。
8> int ispunct(int c)
该函数检查传递的字符是否是标点符号。
9> int isspace(int c)
该函数检查传递的字符是否是空白。
10> int isupper(int c)
该 函数检查传递的字符是否是大写字母。
11> int isxdigit(int c)
该函数检查传递的字符是否是十六进制数字。该库还包含两个转换函数,也接受并返回一个“整数”
S.N.函数及说明
1> int tolower(int c)
这个函数转换大写字母为小写。
2> int toupper(int c)
这个函数小写字母转换为大写。 字符类
示例和详情请查看百度百科
四,<errno.h>函数
errno.h中的C标准库的头文件中定义的整数变量errno,这是由系统调用和一些库函数的错误事件指明什么地方出了错。该宏展开为int类型的修改的左值,因此它可以同时读取和修改程序。
errno设置为零,在程序启动时,标准C库中的某些功能修改它的值到一些异于零值,某些类型的错误信号。您还可以修改它的值,或在方便时归零。
errno.h中头文件还定义了一个宏表示不同的错误代码,而应扩大到int类型的整数常量表达式列表。
*库宏
以下是在头errno.h中定义的宏:
S.N.宏及说明
1> extern int errno
这是宏集合系统调用和一些库函数的错误事件指明什么地方出了错。
2> EDOM Domain Error
这个宏域发生的错误,如果输入参数是外域的数学函数的定义,并设置errno为EDOM。
3> ERANGE 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个组成部分的基础上,一个浮点将它的值,如下所示:
f被定义的宏编辑
double
DBL_DIG double
//小数点后面精确的位数
DBL_EPSILON
//小的正数 ,double的0跨度值
DBL_MANT_DIG
//尾数中的位数
DBL_MAX
//最大值
DBL_MAX_10_EXP
//最大10进制指数
DBL_MAX_EXP
//最大2进制指数
DBL_MIN
//最小值
DBL_MIN_10_EXP
//最小10进制指数
DBL_MIN_EXP
//最小2进制指数
float
FLT_DIG
float//小数点后面精确的位数
FLT_EPSILON
//小的正数,float的0跨度值
FLT_MANT_DIG
//尾数中的位数
FLT_MAX
//最大值
FLT_MAX_10_EXP
//最大10进制指数
FLT_MAX_EXP
//最大2进制指数
FLT_MIN
//最小值
FLT_MIN_10_EXP
//最小10进制指数
FLT_MIN_EXP
//最小2进制指数
FLT_RADIX
//进制基数
FLT_ROUNDS
//加法舍入
long double
LDBL_DIG
long double//小数点后面精确的位数
LDBL_EPSILON
//小的正数,long double的0跨度值
LDBL_MANT_DIG
//尾数中的位数
LDBL_MAX
//最大值
LDBL_MAX_10_EXP
//最大10进制指数
LDBL_MAX_EXP
//最大2进制指数
LDBL_MIN
//最小值
LDBL_MIN_10_EXP
//最小10进制指数
LDBL_MIN_EXP
//最小2进制指数 [1]
These macros define the minimum floating-yiibai value.. 例子
下面的例子演示了如何使用几个在float.h文件中定义的常量。
#include <stdio.h>
#include <float.h>
int main(){
printf("The maximum value of float = %.10e
", FLT_MAX);
printf("The minimum value of float = %.10e
", FLT_MIN);
printf("The number of digits in the number = %.10e
", FLT_MANT_DIG);
}
让我们编译和运行上面的程序,这将产生以下结果:The maximum value of float = 3.4028234664e+38
The minimum value of float = 1.1754943508e-38
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_MAX 65535 定义一个无符号的短整型的最大值。
INT_MIN -32767 定义类型为int的最小值。
INT_MAX +32767 定义一个int的最大值。
UINT_MAX 65535 定义一个unsigned int的最大值。
LONG_MIN -2147483647 定义一个长整型的最小值。
LONG_MAX +2147483647 定义一个长整型的最大值。
ULONG_MAX 4294967295 定义一个无符号长整型的最大值。
例子
下面的例子显示的几个常量定义在limit.h文件的用法。
#include <stdio.h>
#include <limits.h>
int main(){
printf("The number of bits in a byte %d
", CHAR_BIT);
printf("The minimum value of SIGNED CHAR = %d
", SCHAR_MIN);
printf("The maximum value of SIGNED CHAR = %d
", SCHAR_MAX);
printf("The maximum value of UNSIGNED CHAR = %d
", UCHAR_MAX);
printf("The minimum value of SHORT INT = %d
", SHRT_MIN);
printf("The maximum value of SHORT INT = %d
", SHRT_MAX);
printf("The minimum value of INT = %d
", INT_MIN);
printf("The maximum value of INT = %d
", INT_MAX);
printf("The minimum value of CHAR = %d
", CHAR_MIN);
printf("The maximum value of CHAR = %d
", CHAR_MAX);
printf("The minimum value of LONG = %ld
", LONG_MIN);
printf("The maximum value of LONG = %ld
", LONG_MAX);
return(0);
}
让我们编译和运行上面的程序,这将产生以下结果:
The number of bits in a byte 8
The minimum value of SIGNED CHAR = -128
The maximum value of SIGNED CHAR = 127
The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -32768
The maximum value of INT = 32767
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -2147483648
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.函数及说明
1 void (*signal(int sig, void (*func)(int)))(int) 此功能设置函数来处理信号,即。信号处理程序。
2 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> vo id 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.变量和说明
1 size_t
这是一个无符号整数类型的sizeof关键字的结果。
2 clock_t
这是一种适合用于存储处理器的时间。
3 time_t is
这是一种适合用于存储日历时间。
4 struct 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. 宏观与说明
1 NULL
这个宏是一个空指针常量的值。
2 CLOCKS_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的格式。