整理了一些比较多用到的,不是所有的库函数,不定期更新~
函数原型说明 |
功能 |
int abs(int x) |
求整数x的绝对值 |
double fabs(double x) |
求双精度实数x的绝对值 |
double acos(double x) |
计算arccos(x)的值 |
double asin(double x) |
计算arcsin(x)的值 |
double atan(double x) |
计算arctan(x)的值,返回值[ -pi/2, pi/2 ] |
double atan2(double y,double x) |
计算arctan(x/y)的值,atan() 的增强版,能确定象限 |
double sin(double x) |
计算sin(x)的值 |
double cos(double x) |
计算cos(x)的值 |
double tan(double x) |
计算tan(x) |
double exp(double x) |
求e^x的值 |
double pow(double x,double y) |
计算x^y的值 |
double sqrt(double x) |
计算x的开方 |
double ceil(double x) | 往上取整 |
double floor(double x) |
往下取整 |
double round(double x) | 四舍五入取整 |
double log(double x) |
求㏑(x) |
double log10(double x) |
求log10(x) |
double atof(char *str) | 把参数 str 所指向的字符串转换为一个浮点数 |
int atoi(char *str) | 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。 |
long int atol(char *str) | 把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。 |
void *calloc(unsigned nitems, unsigned size) | 分配所需的内存空间,并返回一个指向它的指针。如果请求失败,则返回 NULL。 |
void *malloc(unsigned size) | 分配所需的内存空间,并返回一个指向它的指针。如果请求失败,则返回 NULL。 |
void *realloc(void *ptr, unsigned size) | 尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。该函数返回一个指针 ,指向重新分配大小的内存。如果请求失败,则返回 NULL。 |
void free(void *ptr) | 释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。如果传递的参数是一个空指针,则不会执行任何动作。 |
void abort(void) | 中止程序执行,直接从调用的地方跳出。 |
void exit(int status) | 程序终止执行,返回调用过程,state为0正常终止,非0非正常终止 |
int system(char *command) | 把 command 指定的命令名称或程序名称传给要被命令处理器执行的主机环境,并在命令完成后返回。eg: system("pause"); |
void *bsearch(void *key, void *base, unsigned nitems, unsigned size, int (*compar)(const void *, const void *)) | 对 nitems 对象的数组执行二分查找,base 指向进行查找的数组,key 指向要查找的元素,size 指定数组中每个元素的大小。 数组的内容应根据 compar 所对应的比较函数升序排序。 |
void qsort(void *base, unsigned nitems, unsigned size, int (*compar)(const void *, const void*)) | 对数组进行排序。 |
int rand(void) | 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。 RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。 |
int isalnum(char c) | 该函数检查所传的字符是否是字母和数字。 |
int isalpha(char c) | 该函数检查所传的字符是否是字母。 |
int isdigit(char c) | 该函数检查所传的字符是否是十进制数字。 |
int islower(char c) |
该函数检查所传的字符是否是小写字母。 |
int isupper(char c) | 该函数检查所传的字符是否是大写字母。 |
int isxdigit(char c) | 该函数检查所传的字符是否是十六进制数字。 |
int tolower(char c) |
该函数把大写字母转换为小写字母。 |
int toupper(char c) | 该函数把小写字母转换为大写字母。 |
FILE *fopen(char *filename, char *mode) | 使用给定的模式 mode 打开 filename 所指向的文件。
"r":打开一个用于读取的文件。该文件必须存在。 "w":创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。 "a":追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。 "r+":打开一个用于更新的文件,可读取也可写入。该文件必须存在。 "w+":创建一个用于读写的空文件。 "a+":打开一个用于读取和追加的文件 |
int fclose(FILE *stream) | 关闭流 stream。刷新所有的缓冲区。如果流成功关闭,则该方法返回零。如果失败,则返回 EOF。 |
int remove(const char *filename) | 删除给定的文件名 filename,以便它不再被访问。 |
int rename(char *old_filename, char *new_filename) | 把 old_filename 所指向的文件名改为 new_filename。 |
unsigned fread(void *ptr, unsigned size, unsigned nmemb, FILE *stream) | 从给定流 stream 读取数据到 ptr 所指向的数组中。
ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。 size -- 这是要读取的每个元素的大小,以字节为单位。 nmemb -- 这是元素的个数,每个元素的大小为 size 字节。 stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。 |
unsigned fwrite(void *ptr, unsigned size, unsigned nmemb, FILE *stream) | 把 ptr 所指向的数组中的数据写入到给定流 stream 中。 |
int fseek(FILE *stream, long int offset, int whence) | 设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。如果成功,则该函数返回零,否则返回非零值。
SEEK_SET:文件的开头 SEEK_CUR:文件指针当前的位置 SEEK_END:文件的末尾 |
long int ftell(FILE *stream) | 返回给定流 stream 的当前文件位置。该函数返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设置为一个正值。 |
int feof(FILE *stream) | 测试给定流 stream 的文件结束标识符。当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。 |
void rewind(FILE *stream) | 设置文件位置为给定流 stream 的文件的开头。 |
int fflush(FILE *stream) | 刷新流 stream 的输出缓冲区。如果成功,该函数返回零值。如果发生错误,则返回 EOF,且设置错误标识符(即 feof)。 |
int ferror(FILE *stream) | 测试给定流 stream 的错误标识符(我理解的是判断是否有错误)。如果设置了与流关联的错误标识符,该函数返回一个非零值,否则返回一个零值。 |
void clearerr(FILE *stream) | 清除给定流 stream 的文件结束和错误标识符。这不会失败,且不会设置外部变量 errno,但是如果它检测到它的参数不是一个有效的流,则返回 -1,并设置 errno 为 EBADF。 |
int fprintf(FILE *stream, char *format, ...) | 发送格式化输出到流 stream 中。 |
int printf(char *format, ...) | 发送格式化输出到标准输出 stdout。 |
int sprintf(char *str, char *format, ...) | 发送格式化输出到字符串。 |
int fscanf(FILE *stream, char *format, ...) | 从流 stream 读取格式化输入。 |
int scanf(char *format, ...) | 从标准输入 stdin 读取格式化输入。 |
char fgetc(FILE *stream) | 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。 |
char *fgets(char *str, int n, FILE *stream) | 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。如果发生错误,返回一个空指针。 |
int fputc(char c, FILE *stream) | 把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。 |
int fputs(char *str, FILE *stream) | 把字符串写入到指定的流 stream 中,但不包括空字符。 |
int getc(FILE *stream) | 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。 |
int getchar(void) | 从标准输入 stdin 获取一个字符(一个无符号字符)。 |
char *gets(char *str) | 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 |
int putc(char c, FILE *stream) | 把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。 |
int putchar(char c) | 把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。 |
int puts(char *str) | 把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。 |
char *strcat(char *dest, char *src) | 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 |
int strcmp(char *str1, char *str2) | 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。 |
char *strcpy(char *dest, const char *src) | 把 src 所指向的字符串复制到 dest。 |
unsigned strlen(char *str) | 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 |
char *strrchr(const char *str, int c) | 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。 |
char *strtok(char *str, const char *delim) | 分解字符串 str 为一组字符串,delim 为分隔符。 https://bbs.csdn.net/topics/40226502 #7 的解释很棒 |
char *strstr(char *haystack, char *needle) | 在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。 |
struct tm {
int tm_sec; /* 秒,范围从 0 到 59 */
int tm_min; /* 分,范围从 0 到 59 */
int tm_hour; /* 小时,范围从 0 到 23 */
int tm_mday; /* 一月中的第几天,范围从 1 到 31 */
int tm_mon; /* 月,范围从 0 到 11 */
int tm_year; /* 自 1900 年起的年数 */
int tm_wday; /* 一周中的第几天,范围从 0 到 6 */
int tm_yday; /* 一年中的第几天,范围从 0 到 365 */
int tm_isdst; /* 夏令时 */
};
clock_t clock(void) | 该函数返回自程序启动起,处理器时钟所使用的时间。如果失败,则返回 -1 值。(其中,clock_t 是一个适合存储处理器时间的类型。)感觉有点像long |
time_t time(time_t *timer) | 计算当前日历时间,并把它编码成 time_t 格式。(其中,time_t 适合存储日历时间类型。)。返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位。 |
double difftime(time_t time1, time_t time2) | 返回 time1 和 time2 之间相差的秒数 (time1-time2)。 |
char *ctime(const time_t *timer) | 返回一个表示当地时间的字符串,当地时间是基于参数 timer。 返回的字符串格式如下: Www Mmm dd hh:mm:ss yyyy 其中,Www 表示星期几,Mmm 是以字母表示的月份,dd 表示一月中的第几天,hh:mm:ss 表示时间,yyyy 表示年份。 |
struct tm *localtime(const time_t *timer) | timer 的值被分解为 tm 结构,并用本地时区表示。 |
https://blog.csdn.net/zjy900507/article/details/88316583
https://baike.baidu.com/item/math.h/10991856?fr=aladdin
https://www.runoob.com/cprogramming/c-standard-library-stdlib-h.html