作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
1. 输入输出函数
#include <stdio.h>
类型 | 函数原型 | 功能 | 返回值 |
---|---|---|---|
文件操作 | FILE *fopen(char *filename,char *mode) | 以mode指定的方式打开名为filename的文件 | 成功,返回文件指针(文件信息区的起始地址),否则返回NULL |
- | int fclose(FILE *fp) | 关闭fp所指的文件,释放文件缓冲区 | 出错返回非0,否则返回0 |
- | int rename(char *oldname,char *newname) | 把oldname所指文件名改为newname所指文件名 | 成功返回0,出错返回-1 |
- | void clearer(FILE *fp) | 清除与文件指针fp有关的所有出错信息 | 无 |
- | int feof (FILE *fp) | 检查文件是否结束 | 遇文件结束返回非0,否则返回0 |
- | void rewind(FILE *fp) | 将文件位置指针置于文件开头 | 无 |
- | long ftell (FILE *fp) | 求出fp所指文件当前的读写位置 | 读写位置,出错返回 -1L |
- | int fseek (FILE *fp,long offer,int base) | 移动fp所指文件的位置指针 | 成功返回当前位置,否则返回非0 |
- | - | - | - |
文件读写 | int getc (FILE *fp) | 从fp所指文件中读取一个字符 | 返回所读字符,若出错或文件结束返回EOF |
- | int fgetc (FILE *fp) | 同getc | 同getc |
- | char *fgets(char *buf,int n, FILE *fp) | 从fp所指的文件中读取一个长度为n-1的字符串,将其存入buf所指存储区 | 返回buf所指地址,若遇文件结束或出错返回NULL |
- | int putc (int ch, FILE *fp) | 把ch中字符输出到fp指定的文件中 | 成功返回该字符,否则返回EOF |
- | int fputc(char ch, FILE *fp) | 同putc | 同putc |
- | int fputs(char *str, FILE *fp) | 把str所指字符串输出到fp所指文件 | 成功返回非负整数,否则返回-1(EOF) |
- | int fread(char *pt,unsigned size,unsigned n, FILE *fp) | 从fp所指文件中读取长度size为n个数据项存到pt所指文件 | 读取的数据项个数 |
- | int fwrite(char *pt,unsigned size,unsigned n, FILE *fp) | 把pt所指向的n*size个字节输入到fp所指文件 | 输出的数据项个数 |
- | int fprintf(FILE *fp, char *format, args,…) | 把args,…的值以format指定的格式输出到fp指定的文件中 | 实际输出的字符数 |
- | int fscanf (FILE *fp, char *format,args,…) | 从fp所指的文件中按format指定的格式把输入数据存入到args,…所指的内存中 | 已输入的数据个数,遇文件结束或出错返回0 |
- | - | - | - |
输入输出 | int getchar(void) | 从标准输入设备读取下一个字符 | 返回所读字符,若出错或文件结束返回-1 |
- | char *gets(char *s) | 从标准设备读取一行字符串放入s所指存储区,用’\0’替换读入的换行符 | 返回s,出错返回NULL |
- | int putchar(char ch) | 把ch输出到标准输出设备 | 返回输出的字符,若出错则返回EOF |
- | int puts(char *str) | 把str所指字符串输出到标准设备,将’\0’转成回车换行符 | 返回换行符,若出错,返回EOF |
- | int printf(char *format,args,…) | 把args,…的值以format指定的格式输出到标准输出设备 | 输出字符的个数 |
- | int scanf(char *format,args,…) | 从标准输入设备按format指定的格式把输入数据存入到args,…所指的内存中 | 已输入的数据的个数 |
2. 数学函数
#include <math.h>
类型 | 函数原型 | 功能 | 返回值 |
---|---|---|---|
三角函数 | double sin(double x) | 计算sin(x)的值,x的单位为弧度 | 计算结果 |
- | double cos(double x) | 计算cos(x)的值,x的单位为弧度 | 计算结果 |
- | double tan(double x) | 计算tan(x) | 计算结果 |
反三角函数 | double asin(double x) | 计算sin-1(x)的值,x在-1~1范围内 | 计算结果 |
- | double acos(double x) | 计算cos-1(x)的值,x在-1~1范围内 | 计算结果 |
- | double atan(double x) | 计算tan-1(x)的值 | 计算结果 |
双曲函数 | double sinh(double x) | 计算x的双曲正弦函数sinh(x)的值 | 计算结果 |
- | double cosh(double x) | 计算双曲余弦cosh(x)的值 | 计算结果 |
- | double tanh(double x) | 计算x的双曲正切函数tanh(x)的值 | 计算结果 |
- | - | - | - |
指数对数函数 | double exp(double x) | 求e的x次方的值 | 计算结果 |
- | double log(double x) | 求㏑x,x>0 | 计算结果 |
- | double log10(double x) | 求log10x,x>0 | 计算结果 |
其他计算函数 | int abs( int x) | 求整数x的绝对值 | 计算结果 |
- | double fabs(double x) | 求双精度实数x的绝对值 | 计算结果 |
- | double pow(double x,double y) | 计算x的y次方的值 | 计算结果 |
- | double sqrt(double x) | 计算x的开方,x≥0 | 计算结果 |
- | double ceil(double x) | 返回大于或者等于指定表达式的最小整数 | 计算结果 |
- | double floor(double x) | 返回不大于x的最大整数 | 计算结果 |
- | double atan2(double x) | 计算tan-1(x/y)的值 | 计算结果 |
- | double ldexp(double value, int exp) | 计算value乘以2的exp次幂 value * ( 2^exp ) | 计算结果 |
- | double frexp(double val,int *exp) | 把双精度val分解尾数和以2为底的指数n,即val=x*2的n次方,n存放在exp所指的变量中 | 返回位数x 0.5≤x<1 |
- | double modf(double val,double *ip) | 把双精度val分解成整数部分和小数部分,整数部分存放在ip所指的变量中 | 返回小数部分 |
- | double fmod(double x,double y) | 求x/y整除后的双精度余数 | 计算结果 |
3. 字符函数
#include <ctype.h>
函数原型 | 功能 | 返回值 |
---|---|---|
int isalnum(int ch) | 检查ch是否为字母或数字 | 是,返回1;否则返回0 |
int isalpha(int ch) | 检查ch是否为字母 | 是,返回1;否则返回0 |
int iscntrl(int ch) | 检查ch是否为控制字符 | 是,返回1;否则返回0 |
int isdigit(int ch) | 检查ch是否为数字 | 是,返回1;否则返回0 |
int isgraph(int ch) | 检查ch是否为ASCII码值在ox21到ox7e的可打印字符(即不包含空格字符) | 是,返回1;否则返回0 |
int isprint(int ch) | 检查ch是否为包含空格符在内的可打印字符 | 是,返回1;否则返回0 |
int ispunct(int ch) | 检查ch是否为除了空格、字母、数字之外的可打印字符 | 是,返回1;否则返回0 |
int isspace(int ch) | 检查ch是否为空格、制表或换行符 | 是,返回1;否则返回0 |
int isxdigit(int ch) | 检查ch是否为16进制数 | 是,返回1;否则返回0 |
int islower(int ch) | 检查ch是否为小写字母 | 是,返回1;否则返回0 |
int isupper(int ch) | 检查ch是否为大写字母 | 是,返回1;否则返回0 |
int tolower(int ch) | 把ch中的字母转换成小写字母 | 返回对应的小写字母 |
int toupper(int ch) | 把ch中的字母转换成大写字母 | 返回对应的大写字母 |
4. 字符串函数
#include <string.h>
函数原型 | 功能 | 返回值 |
---|---|---|
char *strcat(char *s1,char *s2) | 把字符串s2接到s1后面 | s1所指地址 |
int strcmp(char *s1,char *s2) | 对s1和s2所指字符串进行比较 | s1<s2,返回负数;s1= =s2,返回0;s1>s2,返回正数 |
char *strcpy(char *s1,char *s2) | 把s2指向的串复制到s1指向的空间 | s1 所指地址 |
unsigned strlen(char *s) | 求字符串s的长度 | 返回串中字符(不计最后的’\0’)个数 |
char *strchr(char *s,int ch) | 在s所指字符串中,找出第一次出现字符ch的位置 | 返回找到的字符的地址,找不到返回NULL |
char *strstr(char *s1,char *s2) | 在s1所指字符串中,找出字符串s2第一次出现的位置 | 返回找到的字符串的地址,找不到返回NULL |
- | - | - |
void *memcpy(void *destin, void *source, unsigned n) | 从源source所指的内存地址的起始位置开始拷贝n个字节到目标destin所指的内存地址的起始位置中 | 返回一个指向目标存储区destin的指针 |
void memmove(void dest, const void* src, size_t count) | 由src所指内存区域复制count个字节到dest所指内存区域 | 返回指向dest的指针 |
int memcmp(const void *str1, const void *str2, size_t n) | 比较内存区域buf1和buf2的前count个字节 | s1<s2,返回负数;s1= =s2,返回0;s1>s2,返回正数 |
void *memchr(const void *str, int c, size_t n) | 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置 | 返回一个指向匹配字节的指针,如果在给定的内存区域未出现字符,则返回 NULL |
void *memset(void *s, int ch, size_t n) | 将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s。在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 | 返回指向 s 的指针 |
5. 功能函数
#include <stdlib.h>
类型 | 函数原型 | 功能 | 返回值 |
---|---|---|---|
随机数 | int rand(void) | 产生0~32767的随机整数 | 返回一个随机整数 |
- | void srand(unsigned seed) | 用seed为随后的随机数生成设置种子值 | 返回0~32767的随机整数 |
动态存储分配 | void *calloc(unsigned n,unsigned size) | 分配n个数据项的内存空间,每个数据项的大小为size个字节 | 分配内存单元的起始地址;如不成功,返回0 |
- | void *malloc(unsigned size) | 分配size个字节的存储空间 | 分配内存空间的地址;如不成功,返回0 |
- | void *realloc(void *p,unsigned size) | 把p所指内存区的大小改为size个字节 | 新分配内存空间的地址;如不成功,返回0 |
- | void *free(void *p) | 释放p所指的内存区 | 无 |
数值转换 | double atof(const char *nptr) | 扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回 | 返回转换后的浮点型数 |
- | int atoi(const char *nptr) | 把参数 nptr 所指向的字符串转换为一个整数(类型为 int 型) | 返回转换后的长整数,如果没有执行有效的转换,则返回零 |
- | long int atol(const char *nptr) | 把参数 nptr 所指向的字符串转换为一个长整数(类型为 long int 型) | 返回转换后的长整数,如果没有执行有效的转换,则返回零 |
执行控制 | void abort(void) | 异常终止一个进程 | 无 |
- | void exit(int status) | 关闭所有文件,终止正在执行的进程 | status作为送给执行环境的出口值,0表示成功结束,两个可用的常数为EXIT_SUCCESS,EXIT_FAILURE |
- | int atexit (void (*)(void)) | 用本函数把一些函数注册为结束动作 | 被注册函数应当是无参无返回值的函数。注册正常完成时atexit返回值0,否则返回非零值 |
系统交互 | int system(const char *nptr) | 发出一个DOS命令,把参数nptr字符串传递给程序的执行环境要求作为系统命令执行 | 如以NULL为参数调用,函数返回非0表示环境里有命令解释器。如果s不是NULL,返回值由实现确定 |
- | char *getenv(const char *nptr) | 从环境中获取环境变量nptr的值 | 如果找不到就返回NULL,具体结果由实现确定 |
查找排序 | void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*cmp)(const void *keyval, const void *datum)) | key指向所要查找的元素,base指向进行查找的数组,nmem为查找长度,一般为数组长度,size为每个元素所占的字节数,一般用sizeof(…)表示,comp指向比较子函数,它定义比较的规则。需要注意的是,数据必须是经过预先排序的,而排序的规则要和comp所指向比较子函数的规则相同 | 查找成功则返回数组中匹配元素的地址,反之则返回空。对于有多于一个的元素匹配成功的情况,bsearch()未定义返回哪一个 |
- | void qsort(void *base, size_t n, size_t size, int (*cmp)(const void *, const void *)) | base指向要排序的数组的第一个元素的指针,nitems由 base 指向的数组中元素的个数,size为数组中每个元素的大小以字节为单位,compar指向比较子函数,它定义比较的规则。用qsort可以把这个数组的元素按cmp确定的上升顺序重新排列 | 如果compar返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的左面;如果compar返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定;如果compar返回值大于0(> 0),那么p1所指向元素会被排在p2所指向元素的右面。 |