C语言常用库函数

整理了一些比较多用到的,不是所有的库函数,不定期更新~

一、math.h

函数原型说明

功能

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)

 

二、stdlib.h

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。

 

三、ctype.h

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) 该函数把小写字母转换为大写字母。

 

四、stdio.h

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,直到空字符,但不包括空字符。换行符会被追加到输出中。

 

五、string.h

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(不包含空结束字符)的位置。

 

六、time.h

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

 

你可能感兴趣的:(c语言,学习)