本章主要来讲一些之前没用用过的标准函数库。分为整数函数、浮点型函数、日期和时间函数等。
整数函数:
整数函数的返回值为整型值,分为三类:算术、随机数和字符串转换。
算术:
标准函数库包含了4个整型算术函数—abs\labs\ div\ldiv
abs—求绝对值:
原型:int abs(int value);
函数说明:abs用来计算传入参数的绝对值,然后将结果返回。
用法:
int answer;
answer = abs(-12);//answer 返回为-12的绝对值,结果为12
labs—求绝对值:
原型:long int labs(long int value);
返回值:labs跟abs一样,用来计算绝对值,但是labs支持长度为long int类型,长度更长。
用法:
1
2
3 long result;
long x = -12345678L; //长度范围超过了int的最大范围
result= labs(x);
div—两个整数相除:
原型:div_t div(int numerator,int denominator);
返回值:返回商和余数
用法:
1
2
3 div_t q;
q = div(10,3);
printf("8 div 3 = %d, remainder = %d\n", q.quot,q.rem);输出:
8 div 3 = 3, remainder = 1
ldiv—两个整数相除:
原型:ldiv_t ldiv(long int numer, long int denom);
返回值:返回商和余数
用法:
1
2
3 ldiv_t lx;
lx = ldiv(100000L, 30000L);
printf("100000 div 30000 = %ld remainder %ld\n", lx.quot, lx.rem);
输出:
100000 div 30000 = 3 remainder 10000
随机数:
在我们常用的一些加密、模拟操作的时候,需要用到随机数,这里有两个函数(rand\srand)合在一起使用能够产生伪随机数。
伪随机数:通过计算产生随机数,有可能重复,因此不是真正的随机数。
rand—产生随机数:
原型:int rand():
用法:
1
2 int number;
number = rand();
srand —提供随机数种子:
原型:void srand(unsigned int seed);
这里的seed是rand函数的种子,用来初始化rand()的初始值。
rand调用之前,需要用srand产生一个种子,如果没有用主动调用srand,系统也会默认使用srand(1)。
通常情况下,srand后面跟时间函数来完成随机种子生成,减少随机数相同的可能性。
srand((unsigned)time(NULL));
int a = rand();
字符串转换:
字符串转换函数把字符串转换成数值,常用的有atoi\atol.
atoi—字符串转成整数:
原型:int atoi(const char *nptr);
返回值:参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。
示例:1
2
3int n;
char *str = "12345.67";
n = atoi(str); //n的值为12345
atol—字符串转成长整形:
原型:long atol(const char *nptr);
返回值:
返回转换后的长整型数。如果传入的字符串为空,或者字符串包含的内容非阿拉伯数字序列,则函数返回默认值0。
示例:1
2
3long l;
char *str = "98765432";
l = atol(str); //l为98765432
浮点型函数:
头文件math.h包含了函数库中剩余的数学函数的声明。这些函数的返回值以及绝大多数都是double类型。
常用的数学函数有三角函数、双曲线函数、对数和指数函数
三角函数:
double sin(double angle);
double cos(double angle);
double tan(double angle);
double asin(double value);
double acos(double value);
double atan(double value);
sin\cos和tan函数的参数是一个用弧度表示的角度,这些函数分包返回这个角度的正弦、余弦和正切值。
asin、acos和atan函数分别返回它们的参数的反正弦、反余弦和反正切。
双曲线函数:
double sinh(double angle);
double cosh(double angle);
double tanh(double angle);
这些函数分别返回它们的参数的双曲正弦、双曲余弦和双曲正切。每个函数的参数都是一个以弧度表示的角度。
对数和指数函数:
double exp(double x);
double log(double x);
double log10(double x);
exp函数返回e值的x次幂
log函数返回x以e为第的对数,也就是常说的自然对数。log10函数返回x以10为底的对数。
日期和时间函数:
日期处理函数需要引用头文件< time.h>
当天时间:
time:
原型:time_t time(time_t *returned_value);
返回值:如果参数是一个非NULL的指针,时间值也将通过这个指针进行存储。如果机器无法提供当前的日期和时间,或者时间值太大,无法用time_t变量表示,函数就返回-1.
ctime:
原型:char ctime(const time_t timep);
说明:ctime将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串返回。
示例:1
2
3time_t timer;
time(&timer);
printf("%s\n",ctime(&timer));
输出:
Sun Jun 19 12:47:41 2016