TA的每日心情 | 慵懒 2016-4-21 12:07 |
|---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
暑假的时候买了《C标准库》一书,但因为当时在新东方学GRE,一直没有仔细钻研。新学期开始又因为学SL而无暇顾及,只是平时隔三岔五的看了看。最近,C语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。7 W' w4 P6 m# e6 R# S& S
第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。
1 |2 L0 f4 a$ o以下为头文件概述(上), s+ m4 I6 Z/ ?0 Z" f. x; L2 @( X9 o
一、assert.h# Q' K+ Q' ]* `" U/ F
1、void assert(int expression);' h$ \; f% d; R1 c* y- z
没有返回值,如果表达式为假则调用中断。9 t8 n) M* D/ @% D. D+ X
二、ctype.h
2 j/ I/ {) a2 N& [! ~! Q; n' z1、int isalnum(int c);+ ?$ B" e) K+ M3 b% Y4 B" z
检查指定字符是否为数字或字母
1 A$ d; N6 D' V- k; t2、int isalpha(int c);+ ~5 K. d5 A( K# R0 ?
检查指定字符是否为字母
7 Q) \9 |# ]. }8 J Y; M4 t, d3、int iscntrl(int c);. m. a+ W C" g
检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。8 ^0 I9 a3 ]3 }' @. b o
4、int isdigit(int c);
" i. F8 D9 H- k" K4 S6 n! b& x8 @判断指定字符是否为数字" [/ l" j X2 }4 r
5、int isgraph(int c);
( q+ O( u8 {8 l$ r- b t1 }判断指定字符是否为除空格" "以外的所有打印字符。
/ i9 \3 L0 R; Q. |# [2 A6、int islower(int c);. a) }$ k$ Y5 _! E6 I2 j* W: e5 V
判断是否指定字符为小写字符
; ?+ S% S4 y4 N. }3 ~, [7、int isprint(int c);
( z1 \' o; c& ~) o判断是否指定字符是包括" "在内的所有可打印的字符1 L9 E: d, N8 o' U
8、int isspace(int c);
% @+ q& b) n2 r7 x判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。/ P5 ~; q% Z2 D: I2 s B
9、isupper(int c);
% Q% d, _+ `5 F. R% _判断指定字符是否为大写字符。# O6 I; Q' `8 S9 q9 d r, u
10、int isxdigit(int c);' H! r; {- O# ?
可字定义区域设置,默认和isdigit一样。
7 r, u' e9 G/ |! i/ q; Y( k11、int tolower(int c);
: \3 j- |: H; t: z% C1 x将指定字符转换成小写字符。
7 f; ^# N1 y% U- K" |* Y6 C12、int toupper(int c);! T) ]" J' y( Z4 Z% U5 a
将指定字符转换成大写字符。; D+ B6 G m7 M
三、errno.h
% X' @! `& h( c: F. H* z3 x. Z宏部分
$ `5 W4 _$ u7 Q1 F7 @2 j四、float.h
% J2 ], f/ j N3 f宏部分,测试上下溢
0 p1 }& o) F: ?% z' `; }五、limits.h7 v/ R' Z. H# r" t* e" s
宏部分5 F5 U0 G3 I; e
六、locale.h% T) {# Q4 E) R7 E8 }! e% V2 b/ C0 C3 w
两个函数、一种类型(struct lconv)、一些宏。6 _8 D U/ J1 z
1、char *setlocale(int category,const char* locale);
1 {: j8 P3 H% C2、struct lconv *localeconv(void);5 b) Y' o0 t. m. M$ h
七、math.h
/ k" l& h4 S \! d& k; B三角函数部分:; E- J0 K0 z' J: o3 V9 N
1、double acos(double x);# r+ K0 Z7 W+ k; K* _: D
计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。! h+ _+ _0 X* E, t8 E a
2、double asin(double x);% O& ?: W/ E, X. }
计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。
$ f3 M5 N+ r1 b( W3、double atan(double x); _. g3 _8 B' t/ a4 O& @# a$ L3 N
计算x的三角反正切。返回值范围[-PI/2,PI/2]。
: J9 e: h5 b" n$ |4、double atan2(double y,double x);
4 S- Q( k, c' l3 ^3 N$ @. M计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
7 m: h/ u0 s1 f: h$ j5、double cos(double x);/ \' J# t5 l9 y* L
计算x(以弧度为单位)的余弦值。
0 {& B$ M$ t' [# c/ u) D! f6、double sin(double x);
, L; N* }: W4 I7 O- V8 g计算x(以弧度为单位)的正弦值。: K! {4 {1 h- y
7、double tan(double x);; y6 q" z1 {1 {& ]) @; C0 @. H
返回x(以弧度为单位)的正切值。# w' {2 v, i& n+ ]
8、double cosh(double x);; e8 F H8 X' @6 J# n# m" x2 t: o
返回x的双曲正弦,若x的值过大,则返回错误。
1 ]+ [( d( w; \$ H9、double sinh(double x);
( ^/ J$ l" {8 A9 h, _) }% u计算x的双曲正弦,如果x的数值太大,则返回错误。# k% W) z6 k& Z) D( a
10、double tanh(double x);9 f, W" {5 \2 }, C5 X+ Z
计算x的双曲正切。
/ Z1 A- l; T( @& ]) [9 @; G11、double exp(double x);
8 M8 ]- {1 n0 V0 u, l" y1 X计算x的指数函数。* E! f8 X& `. g% m
12、double frexp(double value,int *exp);- W8 f0 _+ y" V1 A7 ^; q. q& ^) k
把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。1 N: o% D# j( Z e
13、double ldexp(double x,int exp);" \8 r! M: q5 Z' }- Y8 J( X" n( E2 X
计算x*2^exp的值并返回。- a2 X9 r# j8 `4 p d% N
14、double log(double x);( |- J8 x/ I6 F3 y3 m, L. t
计算x的自然对数,如果参数为负,则发生值域错误。* j- a/ [4 X6 t0 P \
15、double log10(double x);
- l+ D( f0 K$ p, }5 }计算x的以10为底的对数。
; P, K" ]* O% e- R16、double modf(double value,double *iptr);5 u/ z) `. a2 ~0 d* L d; R
将value的整数部分传给iptr,将小数部分返回。: K6 O3 j& c/ D2 ~
幂函数部分:
& L3 U; o% w, D. X% X+ l! ^! O1、double pow(double x,double y);) |, P1 ]* ~% e: H/ e
函数计算x的y次幂,要防止值域错误。" Y/ M! U- a- Z& i: \
2、double sqrt(double x);, i B1 Z" u- z' l! N* ?& Y
函数计算x的非负平方根,如果参数为负,则发生错误。* O$ q5 H1 n5 k) B' Q- d
取整、绝对值、求模部分:# Y" l1 I' T/ |5 L
1、double ceil(double x);
* G7 o7 l" J/ B- G返回不小于x的最小整数。变大取整。) w- x4 E+ @# }% u, ], K: W& j( S
2、double fabs(double x);
* j# e! ^7 K5 i' n9 W1 D返回x的绝对值。" g) ?: J7 P' S% O* u9 Z
3、double floor(double x);
$ A6 ~6 v: ~' _9 l+ v返回不大于x的最大整数。变小取整。3 k$ W3 L* c2 M
4、double fmod(double x,double y);: ~2 F q% w1 H3 w' Z. `- [
返回x/y的余数。
* O6 }: t2 Z; J' c八、setjmp.h7 c& e8 H+ k1 E2 k. e, ]6 ~+ Q
定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
& F- ]: z8 H- j: t$ t4 n" x! J用途饶过常规的函数调用和返回规则。5 g) w) t7 Q& v P8 g
九、signal.h' `! G, T/ {' a5 Q
同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
3 t5 z9 S8 Q2 s6 g定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
- r; s9 O/ g' Y* G1 A' `2 N2 Fvoid (*signal(int sig,void (*func) (int) )(int);
# \/ y) M" M% R通过设置三种方式对信号进行处理。" R+ G% R: l: ]: W5 u
int raise(int sig);" B$ j* S6 C# N5 g3 h6 J3 o) W
把信号sig发送给正在执行的程序。成功返回0,否则非0。# z2 _& G! y w& L
十、stdarg.h
* `0 U4 l4 f5 _. j可变参数列表。定义了一个类型va_list。' {; }0 ~3 a) e. e! D- m
宏:
3 w# R- b8 R3 M3 M' x7 r8 h1、void va_start(va_list ap,paramN); I! x/ g% i+ Z* |2 P
对ap进行初始化。
6 k0 T+ A! k+ L: _2 C% b4 l) f* \2、type va_arg(va_list ap,type);
( l3 _$ K: \9 B" U6 ~- O3、void va_end(va_list ap);! @9 B- F+ U' A9 d3 e# f# H
十一、stddef.h 被放到了stdlib.h1 ^/ I4 _( g# T& _4 v
定义了一些类型:
) P( U% X2 ], Pptrdiff_t 两个指针相减的有符号整数类型
. _+ w8 b4 q. Csize_t 用sizeof操作符的结果的无符号整数类型
7 x% l6 w+ Z& Ewchar_t 整值类型7 M: F# }* f& v2 e9 r+ r/ m
宏:, U( t% c1 q2 y7 I% _6 J! }
NULL 展开为实现定义的空指针常量。
1 P i" S+ Q* T9 h. Z+ woffsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。
) d/ o. j- }8 F* K0 |待续…… |
|