c库函数

1、调试相关的宏

_FILE_:用来代表当前源代码的文件名(字符串表示)

_LINE_:代表当前源代码中行号(正整数表示)

_func_:代表当前所在函数的函数名

_DATE_:代表编译时进行预处理的日期,格式为“MMM DD YYYY “

_TIME_:代表编译源文件的当前时间,格式为“hh:mm:ss”

2、<ctype.h>

<ctype.h>主要提供两类重要的函数:字符测试函数和字符大小转化函数。提供的函数中都以int类型为参数,并返回一个int类型的值。实参类型应该隐式转换或者显示转换为int类型。

int isalpha(int ch)  若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0

int isalnum(int ch)  若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')  返回非0值,否则返回0

int isascii(int ch)  若ch是字符(ASCII码中的0-127)返回非0值,否则返回0

int iscntrl(int ch)  若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)  返回非0值,否则返回0

int isdigit(int ch)  若ch是数字('0'-'9')返回非0值,否则返回0

int isgraph(int ch)  若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0

int islower(int ch)  若ch是小写字母('a'-'z')返回非0值,否则返回0

int isprint(int ch)  若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0

int ispunct(int ch)  若ch是标点字符(0x00-0x1F)返回非0值,否则返回0

int isspace(int ch)  若ch是空格(' '),水平制表符('\t'),回车符('\r'),  走纸换行('\f'),垂直制表符('\v'),换行符('\n')  返回非0值,否则返回0

int isupper(int ch)  若ch是大写字母('A'-'Z')返回非0值,否则返回0

int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,  否则返回0

int tolower(int ch)  若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')

int toupper(int ch)  若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')

3、<string.h>

(1) 复制

 char* strcpy (char *s1, const char *s2);将字符串s2复制到s1指定的地址

 char* strncpy (char *s1, const char *s2, size_t len);
void*  memcpy (void *s1, const void *s2, size_t len);将s2的前len个字符(字节)复制到s1中指定的地址, 不加'\0'

 void* memmove (void *s1, const void *s2, size_t len);当源单元和目的单元缓冲区交迭时使用

 size_t strxfrm (char *s1, const char *s1, size_t len);根据程序当前的区域选项, 将s2的前len个字符(字节)复制到s1中指定的地址, 不加'\0'

(2) 连接

 char* strcat (char *s1, const char *s2);将字符串s2连接到s1尾部

 char* strncat (char *s1, const char *s2, size_t len);将字符串s2的前len个字符连接到s1尾部, 不加'\0'

(3) 比较

 int strcmp (const char *s1, const char *s2);比较字符串s1和s2

 int strncmp (const char *s1, const char *s2, size_t len);
int  memcmp (const void *s1, const void *s2, size_t len);对s1和s2的前len个字符(字节)作比较

 int strcoll (const char *s1, const char *s2);根据程序当前的区域选项中的LC_COLLATE, 比较字符串s1和s2

(4) 查找

 char* strchr (const char *s, int ch);
void* memchr (const void *s, int ch, size_t len);在s中查找给定字符(字节值)ch第一次出现的位置

 char* strrchr (const char *s, int ch);在串s中查找给定字符ch最后一次出现的位置, r表示从串尾开始

 char* strstr (const char *s1, const char *s2);在串s1中查找指定字符串s2第一次出现的位置

 size_t strspn (const char *s1, const char *s2);返回s1中第一个在s2中不存在的字符的索引(find_first_not_of)

 size_t strcspn (const char *s1, const char *s2);返回s1中第一个也在s2中存在的字符的索引(find_first_of)

 char* strpbrk (const char *s1, const char *s2);与strcspn类似, 区别是返回指针而不是索引

 char* strtok (char *s1, const char *s2);从串s1中分离出由串s2中指定的分界符分隔开的记号(token),第一次调用时s1为需分割的字串, 此后每次调用都将s1置为NULL,每次调用strtok返回一个记号, 直到返回NULL为止

(5) 其他

 size_t strlen (const char *s);求字符串s的长度

 void* memset (void *s, int val, size_t len);将从s开始的len个字节置为val

 char* strerror (int errno);返回指向错误信息字符串的指针

 4、<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/2, PI/2]

(3) 双曲三角函数

double sinh (double);
double cosh (double);
double tanh (double);

(4) 指数与对数

double exp (double);
double pow (double, double);
double sqrt (double);
double log (double);   以e为底的对数
double log10 (double);

(5) 取整

double ceil (double);   取上整
double floor (double);   取下整

(6) 绝对值

double fabs (double);

 (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

(8) 取整与取余
double modf (double, double*);  将参数的整数部分通过指针回传, 返回小数部分
double fmod (double, double);  返回两参数相除的余数

5、<stdlib.h>
===================================================

atof()将字符串转换成浮点数的函数
原形:double atof(const char *s)
功能:把s所指向的字符串转换成double类型。
   s格式为:符号 数字.数字 E符号 数字
返回值:字符串的转换值。
头文件:math.h、stdlib.h
===================================================
atoi()将字符串转换成整型数的函数
原形:int atoi(const char *s)
功能:把s所指向的字符串转换成int类型。
   s格式为:符号 数字
返回值:字符串的转换值。若出错则返回0。
头文件:stdlib.h
===================================================
atol()将字符串转换成长整型数的函数
原形:long atol(const char *s)
功能:把s所指向的字符串转换成long int类型。
   s格式为:符号 数字
返回值:字符串的转换值。若出错则返回0。
头文件:stdlib.h
===================================================
calloc()分配内存函数
原形:void *calloc(size_t nitems,size_t size)
功能:在堆中分配一块内存,将该内存的内容全部清0。
返回值:返回指向新分配内存的指针。空间不够则返回NULL。
头文件:stdlib.h、calloc.h
===================================================
free()释放已分配内存的函数
原形:void free(void *block)
功能:释放由calloc、malloc、realloc函数调用所分配的内存。
头文件:stdlib.h、alloc.h
====================================================
gcvt()把双精度数转化成字符串的函数
原形∶char*gcvt(value,ndigit,buf)
  其中∶double value是待转化数
     int ndigit是转化长度
     char *buf保存转化后的地址
头文件∶stdlib.h
====================================================
geninterrupt()执行中断函数
原形:void geninterrupt(int n)
调用方式:geninterrupt(软中断号)
功能:产生一个8086软中断
注:需先向寄存器传递入口信息(用伪变量)
  例如  伪变量=要赋的值(入口信息);
      调用geninterrupt()函数后得接受出口信息
  例如  变量名=伪变量
伪变量∶Turbo C 允许使用伪变量直接访问相应的8086寄存器。伪变量的类型有两种。
  ① unsigned int : _AX、 _BX、 _CX、 _DX、 _CS、 _DS、 _SS、 _ES、_SP、 _BP、 _DI、 _SI
  ② unsigned char: _AL、 _AH、 _BL、 _BH、 _CL、 _CH、 _DL、 _DH
===================================================
getenv()读取环境变量的当前值的函数
原形:char *getenv(const char *name)
用法:s=getenv("环境变量名");
   需先定义char *s;
功能:返回一给定的环境变量值,环境变量名可大写或小写。如果指定的变量在环境中未定义,则返回一空串。
头文件:stdlib.h
====================================================
itoa()把整形数转换为字符串的函数
原形:char *itoa(int value,char *string,int radix)
功能:把value的值转换为以NULL结束的字符串,并把结果存在string中。radix是转换的基数值,在2到36之间。分配给string的空间必须可容纳返回的所有字节(最多17字节)。
返回值:指向string的指针
头文件:stdlib.h
==================================================
_lrotl()将一个无符号长整形数左循环移位的函数
原形:unsigned long _lrotl(unsigned long value,int count)
功能:将value向左循环移动count位。
返回值:将value向左循环移动count位后的值。
头文件:stdlib.h
===================================================
_lrotr()将一个无符号长整形数右循环移位的函数
原形:unsigned long _lrotr(unsigned long value,int count)
功能:将value向右循环移动count位。
返回值:将value向右循环移动count位后的值。
头文件:stdlib.h
===================================================
ltoa()把长整形数转换为字符串的函数
原形:char *ltoa(long value,char *string,int radix)
功能:把value的值转换为以NULL结束的字符串,并把结果存在string中。radix是转换的基数值,在2到36之间。分配给string的空间必须可容纳返回的所有字节(最多33字节)。
返回值:指向string的指针
头文件:stdlib.h
===================================================
malloc()分配内存函数
原形:void *malloc(size_t size)
功能:从堆中分配大小为size字节的块。win32也适用。
返回值:返回新分配内存的地址,若无足够内存,返回NULL。
头文件:alloc.h、stdlib.h
============================================================
putenv()将字符串放入当前环境中的函数
原形:int putenv(const char *name)
用法例:putenv("PATH=C:\B\TC");
功能:把字符串name加到当前程序运行的环境中。当程序结束后,原环境将得到恢复。
返回值:0(成功);-1(失败)
头文件:stdlib.h
============================================================
realloc()重新分配内存函数
原形:void *realloc(void *block,size_t size)
   block指向用malloc、calloc或realloc已得到的内存。
   size是重新分配的字节。
返回值:重分配的块地址。若不能重分配,则返回NULL。
头文件:stdlib.h
=============================================================
_rotl()将一个无符号整形数左循环移位的函数
原形:unsigned _rotl(unsigned value,int count)
功能:将value向左循环移动count位。
返回值:将value向左循环移动count位后的值。
头文件:stdlib.h
=============================================================
_rotr()将一个无符号整形数右循环移位的函数
原形:unsigned _rotr(unsigned value,int count)
功能:将value向右循环移动count位。
返回值:将value向右循环移动count位后的值。
头文件:stdlib.h

 

posted @ 2012-06-02 18:09  always on the way  阅读(557)  评论(0编辑  收藏  举报