第十六章 标准函数库
1. 整型函数库:算术
int abs(int value);
long int labs(long int value);
随机数的
int rand(void);
void srand(unsigned int seed);
其中有个小技巧:使用每一天的时间作为随机数产生的种子
srand((unsigned int )time(0));
字符串转换
int atoi(char const* string);
long int atol(char const* string);
long int strtol(char const* string,char** unused,intbase);
unsigned long int strtoul(char const* string,char**unused,int base);
2.浮点型函数库,
三角函数:
double sin(doubleangle);
double cos(doubleangle);
double tan(doubleangle);
double asin(doublevalue);
double acos(doublevalue);
double atan(doublevalue);
double atan2(doublex,double y);
双曲函数:
double sinh(double angle);
double cosh(double angle);
double tanh(double angle);
对数指数函数:
double exp(doublex);
double log(doublex);
double log10(doublex);
幂:
double pow(doublex,double y);
double sqrt(doublex);
底数、顶数、绝对值和余数:
double floor(doublex);
double ceil(double x);
double fabs(doublex);
double fmod(doublex,double y);
字符串转换:
double atof(charconst* string);
double strtod(charconst* string,char** unused);
3.日期和时间函数:
clock_tclock(void);返回从程序开始运行七=起处理器所消耗的时间
time_t time(time_t*returned_value);当天时间
time函数返回当前的日期时间
注: 调用time函数两次并把两个值相减由此判断期间所流逝的时间是很危险的操作方式;
char* ctime(time_tconst* time_value);日期和时间的转换
doubledifftime(time_t time1,time_t time2);
ctime函数参数是指向time_t的指针,并返回一个指向字符串的指针,字符串格式如下Sun Jul 4 04:02:48 1976\n\0
difftime函数计算time1-time2的差,并把结果转换为秒;
· struct tm *gmtime(time_tconst* time_value);
· struct tm *localtime(time_tconst* time_value);
gmtime函数将时间值转换为UTC时间,localtime函数把时间转换为当地时间;
4.非本地跳转
int setjmp(jmp_bufstate);
voidlongjmp(jmp_buf state,int value);
5.信号
信号表示一个程序的执行期间可能发生的不可预料的事件.当一个信号发生时系统所采取的缺省反应是由编译器定义的,一般是终止程序,但是我们可以通过定义一个信号处理函数并使用signal函数对其进行设置,从而改变信号的缺省行为。
6. int raise(int sig);
void (*signal(int sig, void(*handler)(int)))(int);
raise函数用于显式的引发一个信号;
signal是一个函数,返回一个函数指针,后者所指向的函数接受一个整型参数且没有返回值。volatile关键字防止编译器以一种可能修改程序含义的方式“优化”程序。
7.终止执行程序
void abort(void);
void atexit(void(func)(void));
void exit(int status);
abort函数用于不正常的终止一个正在执行的程序。atexit函数可以把一些函数注册为退出函数,当程序将要正常终止时(或者由于调用exit,或由于main函数返回),退出函数将被调用。总之:当exit函数被调用时,所以被atexit函数注册为退出函数的函数将按照它们所注册的顺序被反序调用,然后所有用于流的缓冲区被刷新,所有打开的文件被关闭,用tmpfile函数创建的文件被删除,然后退出状态返回给宿主环境,程序停止执行。
8.断言
void assert(int expression);
这是一个宏,当它被执行时,这个宏对表达式参数进行测试,如果它的值为假,它就向标准错误打印一条诊断信息并终止程序。
注:(1)assert只适用于验证必须为真的表达式;(2)当NDEBUG被定义后,预处理器将丢弃所有的断言而不必从源文件中把所有的断言实际删除;