C与指针-第十六章-标准函数库

本章主要来讲一些之前没用用过的标准函数库。分为整数函数、浮点型函数、日期和时间函数等。

整数函数:

整数函数的返回值为整型值,分为三类:算术、随机数和字符串转换。

算术:

标准函数库包含了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
3
int n;
char *str = "12345.67";
n = atoi(str); //n的值为12345

atol—字符串转成长整形:

原型:long atol(const char *nptr);
返回值:
返回转换后的长整型数。如果传入的字符串为空,或者字符串包含的内容非阿拉伯数字序列,则函数返回默认值0。

示例:

1
2
3
long 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
3
time_t timer;
time(&timer);
printf("%s\n",ctime(&timer));

输出:

Sun Jun 19 12:47:41 2016

Tianger Ge wechat
如果您喜欢这篇文章,欢迎扫一扫我的微信公众号!