分享

C语言常用的库函数

 一往直前l7hbk6 2017-07-16

库函数并不是C语言的一部分,它是由编译系统根据一般用户的需要编制并提供给用户使用的一组程序。每一种C编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSI C标准提出了一批建议提供的标准库函数。它包括了目前多数C编译系统所提供的库函数,但也有一些是某些C编译系统未曾实现的。考虑到通用性,本附录列出ANSI C建议的常用库函数。

由于C库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不能全部介绍,只从教学需要的角度列出最基本的。读者在编写C程序时可根据需要,查阅有关系统的函数使用手册。

1.数学函数

使用数学函数时,应该在源文件中使用预编译命令:

#include#include 'math.h'

函数名

函数原型

功能

返回值

acos

double acos(double x);

计算arccos x的值,其中-1<><>

计算结果

asin

double asin(double x);

计算arcsin x的值,其中-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);

计算x的双曲余弦cosh x的值

计算结果

exp

double exp(double x);

ex的值

计算结果

fabs

double fabs(double 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分解成数字部分(尾数)和以2为底的指数,即val=x*2n,n存放在eptr指向的变量中

数字部分x

0.5<><>

log

double log(double x);

lnx的值

计算结果

log10

double log10(double x);

log10x的值

计算结果

modf

double modf(double val, int *iptr);

把双精度数val分解成数字部分和小数部分,把整数部分存放在ptr指向的变量中

val的小数部分

pow

double pow(double x, double y);

xy的值

计算结果

sin

double sin(double x);

sin x的值,其中x的单位为弧度

计算结果

sinh

double sinh(double x);

计算x的双曲正弦函数sinh x的值

计算结果

sqrt

double sqrt (double x);

计算,其中x0

计算结果

tan

double tan(double x);

计算tan x的值,其中x的单位为弧度

计算结果

tanh

double tanh(double x);

计算x的双曲正切函数tanh x的值

计算结果

2.字符函数

在使用字符函数时,应该在源文件中使用预编译命令:

#include#include 'ctype.h'

函数名

函数原型

功能

返回值

isalnum

int isalnum(int ch);

检查ch是否字母或数字

是字母或数字返回1,否则返回0

isalpha

int isalpha(int ch);

检查ch是否字母

是字母返回1,否则返回0

iscntrl

int iscntrl(int ch);

检查ch是否控制字符(ASCII码在00xlF之间)

是控制字符返回1,否则返回0

isdigit

int isdigit(int ch);

检查ch是否数字

是数字返回1,否则返回0

isgraph

int isgraph(int ch);

检查ch是否是可打印字符(ASCII码在0x210x7e之间),不包括空格

是可打印字符返回1,否则返回0

islower

int islower(int ch);

检查ch是否是小写字母(az)

是小字母返回1,否则返回0

isprint

int isprint(int ch);

检查ch是否是可打印字符(ASCII码在0x210x7e之间),不包括空格

是可打印字符返回1,否则返回0

ispunct

int ispunct(int ch);

检查ch是否是标点字符(不包括空格)即除字母、数字和空格以外的所有可打印字符

是标点返回1,否则返回0

isspace

int isspace(int ch);

检查ch是否空格、跳格符(制表符)或换行符

是,返回1,否则返回0

isupper

int isupper(int ch);

检查ch是否大写字母(AZ)

是大写字母返回1,否则返回0

isxdigit

int isxdigit(int ch);

检查ch是否一个16进制数字

(09,或AFaf)

是,返回1,否则返回0

tolower

int tolower(int ch);

ch字符转换为小写字母

返回ch对应的小写字母

toupper

int toupper(int ch);

ch字符转换为大写字母

返回ch对应的大写字母

3.字符串函数

使用字符串中函数时,应该在源文件中使用预编译命令:

#include#include 'string.h'

函数名

函数原型

功能

返回值

memchr

void memchr(void *buf, char ch, unsigned count);

buf的前count个字符里搜索字符ch首次出现的位置

返回指向bufch的第一次出现的位置指针。若没有找到ch,返回NULL

memcmp

int memcmp(void *buf1, void *buf2, unsigned count);

按字典顺序比较由buf1buf2指向的数组的前count个字符

buf1<>,为负数

buf1=buf2,返回0

buf1>buf2,为正数

memcpy

void *memcpy(void *to, void *from, unsigned count);

from指向的数组中的前count个字符拷贝到to指向的数组中。Fromto指向的数组不允许重叠

返回指向to的指针

memove

void *memove(void *to, void *from, unsigned count);

from指向的数组中的前count个字符拷贝到to指向的数组中。Fromto指向的数组不允许重叠

返回指向to的指针

memset

void *memset(void *buf, char ch, unsigned count);

将字符ch拷贝到buf指向的数组前count个字符中。

返回buf

strcat

char *strcat(char *str1, char *str2);

把字符str2接到str1后面,取消原来str1最后面的串结束符\0

返回str1

strchr

char *strchr(char *str,int ch);

找出str指向的字符串中第一次出现字符ch的位置

返回指向该位置的指针,如找不到,则应返回NULL

strcmp

int *strcmp(char *str1, char *str2);

比较字符串str1str2

str1<>,为负数

str1=str2,返回0

str1>str2,为正数

strcpy

char *strcpy(char *str1, char *str2);

str2指向的字符串拷贝到str1中去

返回str1

strlen

unsigned intstrlen(char *str);

统计字符串str中字符的个数(不包括终止符\0)

返回字符个数

strncat

char *strncat(char *str1, char *str2, unsigned count);

把字符串str2指向的字符串中最多count个字符连到串str1后面,并以NULL结尾

返回str1

strncmp

int strncmp(char *str1,*str2, unsigned count);

比较字符串str1str2中至多前count个字符

str1<>,为负数

str1=str2,返回0

str1>str2,为正数

strncpy

char *strncpy(char *str1,*str2, unsigned count);

str2指向的字符串中最多前count个字符拷贝到串str1中去

返回str1

strnset

void *setnset(char *buf, char ch, unsigned count);

将字符ch拷贝到buf指向的数组前count个字符中。

返回buf

strset

void *setset(void *buf, char ch);

buf所指向的字符串中的全部字符都变为字符ch

返回buf

strstr

char *strstr(char *str1,*str2);

寻找str2指向的字符串在str1指向的字符串中首次出现的位置

返回str2指向的字符串首次出向的地址。否则返回NULL

4.输入输出函数

在使用输入输出函数时,应该在源文件中使用预编译命令:

#include#include 'stdio.h'

函数名

函数原型

功能

返回值

clearerr

void clearer(FILE *fp);

清除文件指针错误指示器

close

int close(int fp);

关闭文件(ANSI标准)

关闭成功返回0,不成功返回-1

creat

int creat(char *filename, int mode);

mode所指定的方式建立文件(ANSI标准)

成功返回正数,否则返回-1

eof

int eof(int fp);

判断fp所指的文件是否结束

文件结束返回1,否则返回0

fclose

int fclose(FILE *fp);

关闭fp所指的文件,释放文件缓冲区

关闭成功返回0,不成功返回非0

feof

int feof(FILE *fp);

检查文件是否结束

文件结束返回非0,否则返回0

ferror

int ferror(FILE *fp);

测试fp所指的文件是否有错误

无错返回0,否则返回非0

fflush

int fflush(FILE *fp);

fp所指的文件的全部控制信息和数据存盘

存盘正确返回0,否则返回非0

fgets

char *fgets(char *buf, int n, FILE *fp);

fp所指的文件读取一个长度为(n-1)的字符串,存入起始地址为buf的空间

返回地址buf。若遇文件结束或出错则返回EOF

fgetc

int fgetc(FILE *fp);

fp所指的文件中取得下一个字符

返回所得到的字符。出错返回EOF

fopen

FILE *fopen(char *filename, char *mode);

mode指定的方式打开名为filename的文件

成功,则返回一个文件指针,否则返回0

fprintf

int fprintf(FILE *fp, char *format,args,);

args的值以format指定的格式输出到fp所指的文件中

实际输出的字符数

fputc

int fputc(char ch, FILE *fp);

将字符ch输出到fp所指的文件中

成功则返回该字符,出错返回EOF

fputs

int fputs(char str, FILE *fp);

str指定的字符串输出到fp所指的文件中

成功则返回0,出错返回EOF

fread

int fread(char *pt, unsigned size, unsigned n, FILE *fp);

fp所指定文件中读取长度为sizen个数据项,存到pt所指向的内存区

返回所读的数据项个数,若文件结束或出错返回0

fscanf

int fscanf(FILE *fp, char *format,args,);

fp指定的文件中按给定的format格式将读入的数据送到args所指向的内存变量中(args是指针)

以输入的数据个数

fseek

int fseek(FILE *fp, long offset, int base);

fp指定的文件的位置指针移到base所指出的位置为基准、以offset为位移量的位置

返回当前位置,否则返回-1

ftell

long ftell(FILE *fp);

返回fp所指定的文件中的读写位置

返回文件中的读写位置,否则返回0

fwrite

int fwrite(char *ptr, unsigned size, unsigned n, FILE *fp);

ptr所指向的n*size个字节输出到fp所指向的文件中

写到fp文件中的数据项的个数

getc

int getc(FILE *fp);

fp所指向的文件中的读出下一个字符

返回读出的字符,若文件出错或结束返回EOF

getchar

int getchar();

从标准输入设备中读取下一个字符

返回字符,若文件出错或结束返回-1

gets

char *gets(char *str);

从标准输入设备中读取字符串存入str指向的数组

成功返回str,否则返回NULL

open

int open(char *filename, int mode);

mode指定的方式打开已存在的名为filename的文件(ANSI标准)

返回文件号(正数),如打开失败返回-1

printf

int printf(char *format,args,);

format指定的字符串的控制下,将输出列表args的指输出到标准设备

输出字符的个数。若出错返回负数

prtc

int prtc(int ch, FILE *fp);

把一个字符ch输出到fp所值的文件中

输出字符ch,若出错返回EOF

putchar

int putchar(char ch);

把字符ch输出到fp标准输出设备

返回换行符,若失败返回EOF

puts

int puts(char *str);

str指向的字符串输出到标准输出设备,将\0转换为回车行

返回换行符,若失败返回EOF

putw

int putw(int w, FILE *fp);

将一个整数i(即一个字)写到fp所指的文件中(ANSI标准)

返回读出的字符,若文件出错或结束返回EOF

read

int read(int fd, char *buf, unsigned count);

从文件号fp所指定文件中读count个字节到由buf知识的缓冲区(ANSI标准)

返回真正读出的字节个数,如文件结束返回0,出错返回-1

remove

int remove(char *fname);

删除以fname为文件名的文件

成功返回0,出错返回-1

rename

int remove(char *oname, char *nname);

oname所指的文件名改为由nname所指的文件名

成功返回0,出错返回-1

rewind

void rewind(FILE *fp);

fp指定的文件指针置于文件头,并清除文件结束标志和错误标志

scanf

int scanf(char *format,args,);

从标准输入设备按format指示的格式字符串规定的格式,输入数据给args所指示的单元。args为指针

读入并赋给args数据个数。如文件结束返回EOF,若出错返回0

write

int write(int fd, char *buf, unsigned count);

buf指示的缓冲区输出count个字符到fd所指的文件中(ANSI标准)

返回实际写入的字节数,如出错返回-1

5.动态存储分配函数

在使用动态存储分配函数时,应该在源文件中使用预编译命令:

#include#include 'stdlib.h'

函数名

函数原型

功能

返回值

callloc

void *calloc(unsigned n, unsigned size);

分配n个数据项的内存连续空间,每个数据项的大小为size

分配内存单元的起始地址。如不成功,返回0

free

void free(void *p);

释放p所指内存区

malloc

void *malloc(unsigned size);

分配size字节的内存区

所分配的内存区地址,如内存不够,返回0

realloc

void *realloc(void *p, unsigned size);

p所指的以分配的内存区的大小改为sizesize可以比原来分配的空间大或小

返回指向该内存区的指针。若重新分配失败,返回NULL

6.其他函数

有些函数由于不便归入某一类,所以单独列出。使用这些函数时,应该在源文件中使用预编译命令:

#include#include 'stdlib.h'

函数名

函数原型

功能

返回值

abs

int abs(int num);

计算整数num的绝对值

返回计算结果

atof

double atof(char *str);

str指向的字符串转换为一个double型的值

返回双精度计算结果

atoi

int atoi(char *str);

str指向的字符串转换为一个int型的值

返回转换结果

atol

long atol(char *str);

str指向的字符串转换为一个long型的值

返回转换结果

exit

void exit(int status);

中止程序运行。将status的值返回调用的过程

itoa

char *itoa(int n, char *str, int radix);

将整数n的值按照radix进制转换为等价的字符串,并将结果存入str指向的字符串中

返回一个指向str的指针

labs

long labs(long num);

计算long整数num的绝对值

返回计算结果

ltoa

char *ltoa(long n, char *str, int radix);

将长整数n的值按照radix进制转换为等价的字符串,并将结果存入str指向的字符串

返回一个指向str的指针

rand

int rand();

产生0RAND_MAX之间的伪随机数。RAND_MAX在头文件中定义

返回一个伪随机()

random

int random(int num);

产生0num之间的随机数。

返回一个随机()

randomize

void randomize();

初始化随机函数,使用时包括头文件time.h




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多