常用ANSI C标准库函数
数学函数
应包含头文件
<math.h>
函数名 | 函数原型 | 功能 | 说明 |
---|---|---|---|
abs |
int abs(int x) |
计算并返回整数x的绝对值 | |
acos |
double acos(double x) |
计算并返回arccos(x)的值 | 要求x在-1~1之间 |
asin |
double asin(double x) |
计算并返回arcsin(x)的值 | 要求x在-1~1之间 |
atan |
double atan(double x) |
计算并返回arctan(x)的值 | |
atan2 |
double atan2(double x,double y) |
计算并返回arctan(x/y)的值 | |
cos |
double cos(double x) |
计算并返回cos(x)的值 | x的单位为弧度 |
cosh |
double cosh(double x) |
计算并返回双曲余弦函数cosh(x)的值 | |
exp |
double exp(double x) |
计算并返回 |
|
fabs |
double fabs(double x) |
计算并返回x的绝对值 | x为双精度 |
floor |
double floor(double x) |
计算并返回不大于x的最大双精度整数 | |
fmod |
double fmod(double x,double y) |
计算并返回x/y后的余数 | |
frexp |
double frexp(double val,int *eptr) |
把双精度数val分解成数字部分(尾数)x和以2为底的指数n,即 |
返回尾数x,x在0.5~1.0之间 |
labs |
long labs(long x) |
计算并返回长整数x的绝对值 | |
log |
double log(double x) |
计算并返回自然对数ln(x)的值 | x>0 |
log10 |
double log10(double x) |
计算并返回常用对数log10(x)的值 | x>0 |
modf |
double modf(double val,int *iptr) |
把双精度数val分解成数字部分和小数部分,小数部分返回,把整数部分存放在iptr指向的双精度型变量中 | |
pow |
double pow(double x,double y) |
计算并返回 |
|
pow10 |
double pow10(int x) |
计算并返回 |
|
sin |
double sin(double x) |
计算并返回正弦函数sin(x)的值 | x的单位是弧度 |
sinh |
double sinh(double x) |
计算并返回双曲正弦函数sinh(x)的值 | |
sqrt |
double sqrt(double x) |
计算并返回x的平方根 | x>=0 |
tan |
double tan(double x) |
计算并返回正切函tan(x)的值 | x的单位是弧度 |
tanh |
double tanh(double x) |
计算并返回双曲正切函数tanh(x)的值 |
字符判别与转换函数
应包含头文件
<ctype.h>
函数名 | 函数原型 | 功能 | 说明 |
---|---|---|---|
isalnum |
int isalnum(int ch) |
检查ch是否是字母或数字 | 是字母或数字返回1,否则返回0 |
isalpha |
int isalpha(int ch) |
检查ch是否是字母 | 是字母返回1,否则返回0 |
isascii |
int isascii (int ch) |
检查ch是否是ASCII字符 | 是返回1,否则返回0 |
iscntrl |
int iscntrl (int ch) |
检查ch是否控制字符(其ASCII码在0和0xlF之间) | 是控制字符返回1,否则返回0 |
isdigit |
int isdigit (int ch) |
检查ch是否是数字 | |
isgraph |
int isgraph (int ch) |
检查ch是否是可打印字符,不包括空格和控制字符 | 是可输出字符返回1,否则返回0 |
islower |
int islower(int ch) |
检查ch是否是小写字母 | 是小写字母 1,否则返回0 |
isprint |
int isprint (int ch) |
检查ch是否是可打印字符,包括空格 | |
ispunct |
int ispunct (int ch) |
检查ch是否是标点字符(不包括空格),即除字母、数字和空格以外的所有可输出字符 | 是标点返回1,否则返回0 |
isspace |
int isspace (int ch) |
检查ch是否是空格、水平制表符(‘\t’)、回车符(‘\n’)、走纸换行(‘\f’)、垂直制表符(‘\v’)或换行符(‘\n’) | 是返回1,否则返回0 |
isupper |
int isupper(int ch) |
检查ch是否是大写字母 | 是大写字母返回1,否则返回0 |
isxdigit |
int isxdigit (int ch) |
检查ch是否是一个十六进制数字 | 是返回1,否则返回 |
tolower |
int tolower (int ch) |
将ch字符转换为小写字母 | 返回ch对应的小写字母 |
toupper |
int toupper (int ch) |
将ch字符转换为大写字母 | 返回ch对应的大写字母 |
字符串处理函数
应包含头文件
<string.h>
函数名 | 函数原型 | 功能 | 说明 |
---|---|---|---|
memset |
void *memset (void *buf, char ch, unsigned count) |
将字符ch复制到buf指向的数组前count个字符中 | 返回buf |
memcpy |
void *memcpy (void *dest, const void *src, size_t n) |
从src所指的内存地址拷贝n个字符到dest所指的内存地址。和strncpy不同,memcpy并不是遇到’\0’就结束,而是一定会拷贝完n个字节 | 返回dest |
memmove |
void *memmove (void *dest, const void *src, size_t n) |
从src所指的内存地址拷贝n个字符到dest所指的内存地址,和memcpy有一点不同,memcpy的两个参数src和dest所指的内存区间如果重叠则无法保证正确拷贝,而memmove却可以正确拷贝 | 返回dest |
strcat |
char *strcat (char *str1, const char *str2) |
把字符串str2接到sht1后面,取消原来str1最后面的串结束符“\0” | 返回str1 |
strchr |
char *strchr (char *str, int ch) |
找出str指向的字符串中第一次出现字符ch的位置 | 返回指向该位置的指针,如找不到,则返回0 |
strcmp |
char *strcmp (const char *str1, const char *str2) |
比较字符串str1和str2 | 若str1 < str2,返回-1 str1=str2 返回0 str1 > str2,返回1 |
strcpy |
char *strcpy (char *str1, const char *str2) |
把str2指向的字符串复制到str1中去 | 返回str1 |
strlen |
int strlen(const char *str) |
统计字符串str中字符的个数(不包括结束符“\0”) | 返回字符个数 |
strlwr |
char *strlwr(char *str) |
将串str中的字母转为小写字母 | 返回str |
strncat |
char *strncat (char *str1, const char *str2, unsigned count) |
把字符串str2指向的字符串中最多count个字符连到串str1后面,并以’\0’结尾 | 返回str1 |
strncpy |
char *strncpy (char *str1, const char *str2, unsigned count) |
把字符串str2指向的字符串中前count个字符复制到串str1中去 | 返回str1 |
strstr |
char *strstr (const char *str1, const char *str2) |
寻找str2指向的字符串在str1指向的字符串中首次出现的位置 | 返回str2指向的字符串啊首次出现的地址,否则返回0 |
strupr |
char *strupr(char *str) |
将串str中的字母转换为大写字母 | 返回str |
内存管理函数
应包含头文件
<stdlib.h>
,也有编译系统包含<malloc.h>
函数名 | 函数原型 | 功能 | 说明 |
---|---|---|---|
calloc |
void *calloc(unsigned num,unsigned size) |
分配num个数据项的内存连续空间,每个数据项的大小为size | 返回分配内存单元的起始地址,如不成功,返回0,动态空间中初始值自动为0 |
free |
void free (void *ptr) |
释放ptr所指内存区 | |
malloc |
void *malloc (unsigned size) |
分配size字节的内存区 | 返回所分配的内存区地址,如内存不够,返回0 |
realloc |
void *realloc (void *ptr,unsigned newsize) |
将ptr所指的已分配的内存区的大小改为newsize,size可以比原来分配的空间大或小 | 返回指向该内存区的指针,若重新分配失败,返回0 |
类型转换函数
应包含头文件
<stdlib.h>
函数名 | 函数原型 | 功能 | 说明 |
---|---|---|---|
atof |
double atof (char *str) |
将str指向的字符串转换为一个double型的值 | 返回双精度计算结果 |
atoi |
int atoi (char *str) |
将str指向的字符串转换为一个int型的值 | 返回转换结果 |
atol |
long atol (char *str) |
将str指向的字符串转换为一个long型的值 | 返回转换结果 |
ecvt |
char *ecvt (double value, int ndigit, int *decpt, int *sign) |
将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点 | 返回字符串值 |
fcvt |
char *fcvt (double value, int ndigit, int *decpt, int *sign) |
以指定位数为转换精度,余同ecvt() | 返回字符串值 |
gcvt |
char *gcvt (double value, int ndigit, int *buf) |
将双精度浮点型值转换为字符串,转换结果中包含十进制小数点 | 返回字符串值 |
itoa |
char *itoa (int value,char *str,int radix ) |
将整数value的值按照radix进制转换为等价的字符串,并将结果存入str指向的字符串 | 返回一个指向str的字符串 |
strtod |
double strtod(char *str, char **endptr) |
讲一个字符串转换为double值 | 返回double型的浮点数 |
strtol |
long strtol(char *str, char **endptr, int base) |
将一个字符串转换为长整数 | 长整数值 |
ultoa |
char *ultoa(unsigned long value, char *string, int radix) |
将一个无符号长整数转换为字符串 | 返回字符串值 |
输入输出函数
应包含头文件
<stdio.h>
函数名 | 函数原型 | 功能 | 说明 |
---|---|---|---|
clearerr |
void clearerr (FILE *fp) |
复位错误标志 | |
fclose |
int fclose(FILE *fp) |
关闭文件指针fp所指向的文件,释放缓冲区 | 成功返回0,出错返回EOF并设置errno |
feof |
int feof(FILE *fp) |
检查文件是否结束 | 遇文件结束符返回非0值,否则返回0 |
ferror |
int ferror(FILE *fp |
检查fp指向的文件中的错误 | 无措时返回0,有错时返回非0值 |
fflush |
int fflush(FILE *fp) |
如果fp所指向的文件是“写打开”,则将输出缓冲区的内容物理地写入文件;若文件是“读打开”的,则清除输入缓冲区中的内容 | 成功返回0,出现写错误时,返回EOF |
fgetc |
int fgetc(FILE *fp) |
从fp指向的文件中取得一个字符 | 返回所取得的字符,若读入出错则返回EOF |
fgets |
char *fgets(char *buf, int n, FILE *fp) |
从fp指向的文件读取一个长度为(n-1)的字符串,存放到起始位置为buf的空间 | 成功则返回地址buf,若读入出错则返回NULL |
fopen |
FILE *fopen(const char *filename, const char *mode) |
以mode指定的方式打开名为filename的文件 | 成功则返回一个文件指针,否则返回NULL |
fprintf |
int fprintf(FILE *fp, char *format[,argument,...] |
将argument的值以format指定的格式输出到fp所指向的文件中 | 返回实际输出字符个数,出错则返回负数 |
fputc |
int fputc(char ch, FILE *fp) |
将字符ch输出到fp指向的文件中 | 成功则返回该字符,否则返回EOF |
fputs |
int fputs(char str, FILE *fp) |
将str指向的字符串输出到fp指向的文件中 | 成功则返回0,否则返回非0 |
fread |
int fread(void *ptr, unsigned size, unsigned n, FILE *fp) |
从fp所指向的文件中中读取长度为size的n个数据项,存到ptr所指向的内存区中 | 返回所读的数据项个数,若遇到文件结束或出错,返回0 |
fscanf |
int fscanf(FILE *fp, char *format[,argument,...]) |
从fp所指向的文件中的按format指定的格式将输入数据送到argument所指向的内存单元 | 已输入的数据个数 |
fseek |
int fseek(FILE *stream, long offset, int base) |
将fp所指向的文件位置指针移到以base所指出的位置为基准,以offset为位移量的位置 | 返回当前位置,否则返回-1 |
ftell |
long ftell(FILE *fp) |
返回fp所指向的文件中的读写位置 | 返回fp所指向的文件中的读写位置 |
fwrite |
int fwrite(const void *ptr, unsigned size, unsigned n, FILE *fp) |
将ptr所指向的n*size字节输出到fp所指向的文件中 | 返回写到fp所指向的文件中的数据项的个数 |
getc |
int getc(FILE *stream) |
从fp所指向的文件中读入一个字符 | 返回所读字符,若文件结束或出错,返回EOF |
getchar |
int getchar(void) |
从标准输入设备读取下一个字符 | 返回所读字符,若文件结束或出错,返回-1 |
gets |
char *gets(char *str); |
从标准输入设备读入字符串,放到str所指定的字符数组中,一直读到接收换行符或EOF时为止,换行符不作为输入串的内容,变成’\0’后作为该字符串的结束 | |
perror |
void perror(const char *str) |
向标准错误输出字符串str,并随后附上冒号以及全局变量errno代表的错误消息的文字说明 | |
printf |
int printf(const char *format[,argument,...]) |
将输出列表argument的输出到标准输出设备 | 输出字符的个数,若出错,则返回负数 |
putc |
int putc(char ch, FILE *fp) |
将一个字符ch输出到fp指向的文件中 | 返回输出的字符ch;若出错,返回EOF |
putchar |
int putchar(char ch) |
将一个字符ch输出到标准输出设备 | 返回输出的字符ch;若出错,返回EOF |
puts |
int puts(const char *string) |
将str指向的字符串输出到标准输出设备,将’\0’转换为回车换行 | 返回换行符;若出错,返回EOF |
rename |
int rename(char *oldname, char *newname) |
把oldname所指的文件名改为由newname指定的文件名 | 成功返回0,出错返回1 |
rewind |
void rewind(FILE *fp) |
将fp指向的文件中的位置指针置于文件的开头位置,并清除文件结束标志 | |
scanf |
int scanf(const char *format[,argument,...]) |
从标准输入设备按format指向的字符串规定的格式,输入数据给argument所指向的单元 | 读入并赋给的数据个数,遇文件结束返回EOF;出错返回0 |
其他常用函数
应包含头文件
<stdlib.h>
函数名 | 函数原型 | 功能 | 说明 |
---|---|---|---|
exit |
void exit (int status) |
调用该函数时程序立即正常终止,清空和关闭任何打开的文件,程序正常退出状态由status等于0表示,非0表明定义实现错误 | |
rand |
int rand() |
产生0到RAND_MAX之间的伪随机数(RAND_MAX在头文件中定义) | 返回一个伪随机(整)数 |
srand |
void srand(unsigned seed) |
为函数rand()生成的伪随机数序列设置起点种子值 |