1.整型函数
这组函数返回整型值,这些函数分为三类:算术、随机数和字符串转换。
1)算术
int abs(int value);
long int labs(long int value);
div_t div(int numerator,int denominator);
ldiv_t ldiv(long int number,long int denom);
2)随机数(伪随机数)
int rand(void);
void srand(unsigned int seed);
3)字符串转换
int atio(char const *string);
long int atol(char const *string);
long int strtol(char const *string,char **unused,int base);
unsigned long int strtoul(char const *string,char **unused,int base);
2.浮点型函数
1)三角函数
double sin(double angle);
double cos(double angle);
dobule tan(double angle);
double asin(double value);
double acos(double value);
double atan(double value);
double atan2(double value);
2)双曲函数
double sinh(double angle);
double cosh(double angle);
double tanh(double angle);
3)对数和指数函数
double exp(double x);
double log(double x);
double log10(double x);
4)浮点表示
double frexp(double value,int *exponent);
double ldexp(double fraction,int exponent);
double modf(double value,double *ipart);
5)幂
double pow(double x,double y);
double sqrt(double x);
6)底数、顶数、绝对值和余数
double floor(double x);
double ceil(double x);
double fabs(double x);
double fmod(double x,double y);
7)字符串转换
double atof(char const *string);
double strtod(char const *string,char **unused);
3.日期和时间函数
//处理时间
clock_t clock(void);
//当天时间
time_t time(time_t *returned_value);
//日期和时间转换
char *ctime(time_t const *time_value);
double difftime(time_t time1,time_t time2);
asctime(locatime(time_value));
struct tm *gmtime(time_t const *time_value);
struct tm *localtime(time_t const *time_value);
4.非本地跳转
int setjmp(jmp_buf state);
void longjmp(jump_buf state,int value);
5.信号
SIGABRT/SIGFPE/SIGILL/SIGSEGV/SIGINT/SIGTERM.
6.打印可变参数列表
int vprintf(char const *format,va_list,arg);
int vfprintf(FILE *stream,char const *format,va_list arg);
int vsprintf(char *buffer,char const *format,va_list_arg);
7.执行环境
1)终止执行
void abort(void);
void atexit(void(func)(void));
void exit(int status);
2)断言
void assert(int expression);
3)环境
char *getenv(char const *name);
4)执行系统命令
void system(char const *command);
5)排序和查找
void qsort(...);
void *bsearch(...);
8.locale
char *setlocal(int category,char const *local);
9.警告的总结
1)忘了包含math.h头文件可能导致数学函数产生不正确的结果;
2)clock函数可能只产生处理时间的近似值;
3)time函数的返回值并不一定是以秒为单位的;
4)tm结构中月份的范围并不是从1到12;
5)tm结构中的年是从1900年开始计数的年数;
6)longjmp不能返回到一个已经不再处于活动状态的函数;
7)从异步信号的处理函数中调用exit或abort函数是不安全的;
8)当每次信号发生时,必须重新设置信号处理函数;
9)避免exit函数的多重调用。
10.编程提示总结
1)滥用setjmp和longjmp可能导致晦涩难懂的而代码;
2)对信号进行处理将导致程序的可移植性变差;
3)使用断言可以简化程序的调试;