C语言标准库函数(选自C程序设计第二版)

C语言标准库

C-1 标准输出输入函数<stdio.h>

¨?FILE* fopen(const char* filename, const char* mode):使用mode 模式

开启参数filename 的档案,传回调案串流,失败传回NULL.

¨?FILE* freopen(const char* filename, const char* mode, FILE* stream) :

关闭档案后重新开启档案.打开指定文件,并关联到stream返回stream.出错返回NULL

¨?int fflush(FILE* stream):清除缓冲区的内容,成功传回0,失败传回

EOF.

¨?int fclose(FILE* stream):关闭档案.出错返回EOF否则返回0

¨?int remove(const char* filename):删除参数的档案,失败传回非零

.

¨?int rename(const char* oldname, const char* newname):将文件名

oldname 改为newname,失败传回非零值.

¨?FILE* tmpfile():建立"wb+"模式的临时文件,当结束程序后就会关

闭且删除此档案,并返回与之关联的流.

¨?char* tmpname(char s[L_tmpnam]):指定临时文件的名称为s.

¨?int setvbuf(FILE* stream, char* buf, int mode, size_t size):指定串流暂存区尺寸size,使用mode参数值_IOFBF(0)为完整暂存区、_IOLBF(1)

线性暂存区或_IONBF(2) 没有暂存区.出错返回非0.

¨?void setbuf(FILE* stream, char* buf):指定串流的暂存区为参数buf.

¨?int fprintf(FILE* stream, const char* format, ...):将格式化字符串写入文件

案串流.

¨?int printf(const char* format, ...):在标准输出显示格式化字符串.

¨?int sprintf(char* s, const char* format, ...):将格式化字符串输出到字符串

s.

¨?int fscanf(FILE* stream, const char* format, ...):从档案串流读取指定

格式的数据.

¨?int scanf(const char* format, ...):从标准输入读取指定格式的数据.

¨?int sscanf(char* s, const char* format, ...):从字符串s 读取指定格式的资料.

¨?int fgetc(FILE* stream):从档案串流读取一个字符.

¨?char* fgets(char* s, int n, FILE* stream):从档案串流读取一个字符串.

¨?int fputc(int c, FILE* stream):写入一个字符到档案.

¨?char* fputs(const char* s, FILE* stream):写入一个字符串到档案.

¨?int getc(FILE* stream):从档案串流读取一个字符.

¨?int getchar(void):从标准输入读取一个字符.

¨?char* gets(char* s):从标准输入读取一个字符串.

¨?int putc(int c, FILE* stream):写入一个字符到档案.

¨?int putchar(int c):在标准输出显示一个字符.

¨?int puts(const char* s):在标准输出显示一个字符串.

¨?int ungetc(int c, FILE* stream):将一个字符放回调案串流.

¨?size_t fread(void* ptr, size_t size, size_t nobj, FILE* stream):从档案读

取指定大小的数据.

¨?size_t fwrite(const void* ptr, size_t size, size_t nobj, FILE* stream):

指定大小的数据写入档案.

¨?int fseek(FILE* stream, long offset, int origin):移动档案指标到offset位移量, 其方向是origin 参数值SEEK_SET(0) 的档案开头、

SEEK_CUR(1) 是目前位置或SEEK_END(2) 文件尾.

¨?long ftell(FILE* stream):目前档案指针的位置.

¨?void rewind(FILE* stream):重设档案指标到档头.

¨?int feof(FILE* stream):是否到达档尾.

¨?int ferror(FILE* stream):是否档案串流产生错误.

 

C-2 字符检查函数<ctype.h>

¨?int isalnum(int c):isalpha(c)isdigit(c)的字符.

¨?int isalpha(int c):isupper(c)islower(c)的字符.

¨?int iscntrl(int c):是否是ASCII 控制字符.

¨?int isdigit(int c):是否是数字.

¨?int isgraph(int c):是否是显示字符,不含空格符.

¨?int islower(int c):是否是小写字符.

¨?int isprint(int c):是否是显示字符0x20 (' ')0x7E ('~').

¨?int ispunct(int c):是否是显示字符,不包含空白、字母、数字字符.

¨?int isspace(int c):是否是空格符.

¨?int isupper(int c):是否是大写字符.

¨?int isxdigit(int c):是否是十六进制字符.

¨?int tolower(int c):转换成小写字符.

¨?int toupper(int c):转换成大写字

 

C-3 字符串函数<string.h>

¨?char* strcpy(char* s, const char* ct):将字符串ct 复制到字符串s.

¨?char* strncpy(char* s, const char* ct, size_t n):将字符串ct n 个字符

复制到字符串s.

¨?char* strcat(char* s, const char* ct):链接字符串ct 到字符串s 之后.

¨?char* strncat(char* s, const char* ct, size_t n):链接字符串ct n 个字符

到字符串s.

¨?int strcmp(const char* cs, const char* ct):比较字符串cs ct.

¨?int strncmp(const char* cs, const char* ct, size_t n):比较字符串cs ct

的前n 个字符.

¨?char* strchr(const char* cs, int c):传回字符c 第一次出现在字符串cs

置的指标.

¨?char* strrchr(const char* cs, int c):传回字符c 第后一次出现在字符串cs

位置的指针.

¨?char* strpbrk(const char* cs, const char* ct):传回字符串ct 任何字符在字符串cs 第一次出现的位置指针.

¨?char* strstr(const char* cs, const char* ct):传回字符串ct 在字符串cs 第一次出现的位置指针.

¨?size_t strlen(const char* cs):传回字符串cs 的长度.

¨?char* strerror(int n):传回指定错误代码的说明文字内容.

¨?char* strtok(char* s, const char* ct):以字符串ct 的任何字符为分隔字符,找寻字符串s 中下一个token 记号.第一次调用,s为非空.它搜索s,找到不包含ct中字符的第一个记号,s中的下一个字符替换为’/0’,并返回指向记号的指针.随后,每次调用时,(s的值是否为NULL指示),均返回下一个不包含ct中字符的记号.s中没有这样的记号时,返回NULL.每次调用时字符串ct可以不同.

¨?void* memcpy(void* s, const void* ct, size_t n):从位置ct 复制n 个字元到位置s,传回s.

¨?void* memmove(void* s, const void* ct, size_t n):从位置ct 搬移n

字符到位置s,传回s.

¨?int memcmp(const void* cs, const void* ct, size_t n):比较位置ct 和位置cs 的前n 个字符.

¨?void* memchr(const void* cs, int c, size_t n):传回cs 位置开始前n

字符第一次出现字符c 的位置指针.

¨?void* memset(vo id* s, int c, size_t n):取代cs 位置开始前n 个字符成为字符c,传回位置指针s.

 

 

C-4 数学函数<math.h>

¨?double exp(double x):自然数的指数e^x.

¨?double log(double x):自然对数logx

¨?double log10(double x):十为底的对数log10x.

¨?double pow(double x, double y):传回参数x为底参数y 的次方值x^y.

¨?double sqrt(double x):参数x 的平方根.

¨?double ceil(double x):传回大于或等于参数x 的最小double 整数.

¨?double floor(double x):传回小于或等于参数x 的最大double 整数.

¨?double fabs(double x):传回参数x 的绝对值.

¨?hypot(double x, double y):传回√(x^2+y^2)公式的值

¨?double ldexp(double x, int n):x 乘以2 n 次方是x*2^n.

¨?double frexp(double x, int* exp):将参数x 的浮点数分解成尾数和指

,x = m*2^exp,传回m值的尾数,将指数存入参数exp.

¨?double modf(double x, double* ip):将浮点数x 分解成整数和小数部

,传回小数部分,将整数部分存入参数ip.

¨?double fmod(double x, double y):如果y 为非零值,传回浮点数x/y

的余数.

¨?double sin(double x):正弦函数.

¨?double cos(double x):余弦函数.

¨?double tan(double x):正切函数.

¨?double asin(double x):反正弦函数.

¨?double acos(double x):反余弦函数.

¨?double atan(double x):反正切函数.

¨?double atan2(double y, double x):参数y/x 的反正切函数值.

¨?double sinh(double x):hyperbolic 正弦函数,sinh(x)=(e^x-e^(-x))/2.

¨?double cosh(double x) : hyperbolic 余弦函数, cosh(x)=(e^x+e^(-

x))/2.

¨?double tanh(double x) : hyperbolic 正切函数, tanh(x)=(e^x-e^(-

x))/(e^2+e^(-x)).

  C-5 日期/时间函数<time.h>

¨?clock_t clock(void):传回程序开始执行后所使用的CPU 时间,

ticks 为单位,除以常数CLK_TCK就是秒数.

¨?time_t time(time_t* tp):传回目前的历法时间(Calendar Time ),

会指定给参数的tp 指标,如为无效时间,传回-1.

¨?double difftime(time_t time2, time_t time1):传回参数time2 time1

的时间差,time2-time1.

¨?time_t mktime(struct tm* tp):将参数*tp 的当地时间改为历法时间,

如果不能转换传回-1.

¨?char* asctime(const struct tm* tp):传回参数tm 结构指针转换成日期/

时间格式的字符串,字符串最后有换行符/n.

¨?char* ctime(const time_t* tp):传回参数time_t 指标转换成当地日期/

时间的字符串,字符串最后有换行符/n.

¨?struct tm* gmtime(const time_t* tp):传回将参数的time_t 指标转换成

UTC(Coordinated Universal Time )日期/时间的tm 结构指针.

¨?struct tm* localtime(const time_t* tp):传回将参数的time_t 指标转换成当地日期/时间的tm结构指针.

¨?size_t strftime(char* s, size_t smax, const char* fmt, const struct tm* tp):将参数tp 的日期/时间以格式化字符串fmt 输出到字符串s,最多

储存smax个字符.

C-6 工具函数<stdlib.h>

¨?int abs(int n)long labs(long n):传回整数n 的绝对值.

¨?double atof(const char* s):将参数字符串s 转换成浮点数,如果字符串不能转换传回0.0.等价于strtod(s,(char **)NULL).

¨?int atoi(const char* s):将参数字符串s 转换成整数,如果字符串不能转换传回0.等价于(int)strtol(s,(char **)NULL,10).

¨?long atol(const char* s):将参数字符串s 转换成长整数,如果字符串不能转换传回0.等价于strtol(s, (char**)NULL,10).

¨?double strtod(const char* s, char** endp):函数忽略字符串s 前的空白字元,s的前缀部分,数字转换成浮点数.除非endpNULL,否则该函数将把指向s中未转换部分(s的后缀部分)的指针保存在*endp.如果结果上溢,则函数返回带有符号的HUGE_VAL;如果结果下溢,则返回0.在这两种情况下,errno都设置成ERANGE.

¨?long strtol(const char* s, char** endp, int base):函数忽略字符串s 前的空白字元,s的前缀部分,数字转换成畅整型.除非endpNULL,否则该函数将把指向s中未转换部分(s的后缀部分)的指针保存在*endp.如果base的值在2-36之间,则假定输入是以该数为基底的;如果base的取值为0,则基底为八进制、十进制或十六进制.(08,0x0X16进制)无论在哪种情况下.字母均表示10-base-1之间的数字.如果base值为16则可以加上前导0x0X.

¨?unsigned long strtoul(const char* s, char** endp, int base):如同strtol函数,其传回值是无符号长整数.

¨?void* calloc(size_t nobj, size_t size):nobj 个长度为size的对象最长的数组分配内存,并返回指向分配区域的指针;若无法满足要求,则返回NULL.该空间的初始长度为0字节(初值为0).

¨?void* malloc(size_t size):传回大小size 内存指针,没有指定初

,错误传回NULL.

¨?void* realloc(void* p, size_t size):将指针p 的内存改为size 大小,

不会更改原内存的值,多配置部分初值为0,错误传回NULL.

¨?void free(void* p):释放参数p 指针的内存空间.

¨?void abort():强迫程序以不正常方式结束,如同呼叫raise(SIGABRT)

函数.

 

¨?void exit(int status):程序以正常方式结束,传回系统环境状态值, 0

表示正常结束.

¨  int atexit(void (*fun)(void)):登记函数fun,该函数将在函数正常终止时调用.如果登记失败,则返回非0.

¨?int system(const char* s):将字符串s 的指令传给环境来执行,也就是

执行MS-DOS的指令.

¨?char* getenv(const char* name):传回参数name 的环境字符串,如果没

有传回NULL.

¨?void* bsearch(const void* key, const void* base, size_t n, size_t size, int (*cmp)(const void* keyval, const void* datum)):数组基础的二元搜寻

函数,数组是参数base,键值是参数key,n 是数组大小, size 是每个元素的大小,最后的参数是指向函数的指针,这是比较元素大小的函数. cmp函数中,如果第一个参数(查找关键字)小于第二个参数(表象),它必须返回一个负值;如果第一个参数等于第二个参数,它必须返回0;如果第一个参数大于第二个参数,它必须大于0.数组base中的项必须升序排列. bsearch找到返回指向匹配值得指针,没有找到传回NULL.

¨?void qsort(void* base, size_t n, size_t size, int (*cmp)(const void*, const void*)):数组基础的快速排序法(升序)函数,数组是参数base,n 是数组大小,size 是每个元素的大小,最后的参数是指向函数的指针,这是比较元素大小的函数.

¨?int rand(void):传回随机数的整数值,其值的范围是0 RAND_MAX

常数,其值为0x7FFF.

¨?void srand(unsigned int seed):指定随机数的种子数,参数是无符号整

,如果没有指定,预设的种子数为1.

¨  div_t div(int num,int denom):div函数计算num/denom的商和余数,并把结果分别保存在结构类型div_t的两个int类型的成员quotrem.

¨  ldiv_t ldiv(long num,long denom):同上,计算类型为long.

 

C-7诊断:<assert.h>

提供assert宏用于为程序增加诊断功能.

void assert(int expression):表达式为0则在stderr中打印一条消息.

 

C-8 可变参数表:<stdarg.h> 

¨  va_start(va_list ap,lastarg):在访问任何未命名参数前,必须用va_start宏初始化ap一次.

¨  type va_arg(va_list ap,type):每次执行宏va_arg都将产生一个与下一个未命名的参数具有相同类型和数值的值,它同时修改ap,以使下一次执行va_arg时返回下一个参数.

¨  void va_end(va_list ap):在所有的参数处理完毕之后,且在退出函数f之前,必须调用宏va_end一次.

 

C-9 非局部跳转<setjmp.h>

头文件<setjmp.h>中的声明提供了一种不同于通常的函数调用和返回顺序的方式,特别是,它允许立即从一个深层嵌套的函数调用中返回.

¨  int setjmp(jmp_buf env):setjmp宏将状态信息保存在env,longjmp使用.如果直接调用setjmp则返回值为0;如果在longjmp中调用setjmp,则返回值为非0.setjmp只能用于某些上下文中,如用于if语句,switch语句,循环语句的条件测试中以及一些简单的关系表达式中如:

if (setjmp(env) == 0)

/* get here on direct call */

else

/* get here by calling longjmp */

¨  void longjmp(jmp_buf env, int val):longjmp通过最后一次调用setjmp时保存在env中的信息恢复状态,同时,程序重新恢复执行,其状态等同于setjmp宏调用刚刚执行完并返回非0val.包含setjmp宏调用的函数的执行必须还没有终止.除下列清空下,可访问对象的值同调用longjmp时的值相同;在调用setjmp宏后,如果调用setjmp宏的函数中的非volatile自动变量改变了,则他们将变成未定义状态.

 

C-10 信号:<signal.h>

¨  void (*signal(int sig,void (*handler)(int)))(int):signal决定了如何处理后续的信号.如果handler的值为SIG_DFL,则采用由实现定义的默认行为;如果handler的值为SIG_IGN,则忽略该信号;否则,调用handler指向的函数(以信号作为参数).有效的信号包括:

SIGABRT  一场终止,例如由abort引起的终止

SIGFPE   算术运算出错,如除数为0或溢出

SIGILL   非法函数映像,如非法指定

SIGINT   用于交互式目的信号,如中断

SIGSEGV  非法存储器访问,如访问不存在的内存单元

SIGTERM  发送给程序的终止请求

对于特定的信号,signal将返回handler的前一个值;如果出现错误,则返回值SIG_ERR.当随后碰到信号sig,该信号将恢复为默认行为,随后调用信号处理程序,就好象由(*handler)(sig)调用的一样.信号处理程序返回后,程序将从信号发生的位置重新开始执行.信号的初始状态由具体的实现定义.

¨  int raise(int sig):raise向程序发送信号sig.如果发送不成功,则返回一个非0.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值