TA的每日心情 | 慵懒 2016-4-21 12:07 |
---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
暑假的时候买了《C标准库》一书,但因为当时在新东方学GRE,一直没有仔细钻研。新学期开始又因为学SL而无暇顾及,只是平时隔三岔五的看了看。最近,C语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。
* a! j% y) Q) G( f第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。- R* t& K5 I0 Y& @
以下为头文件概述(上)
8 o0 ?2 {7 @1 o1 L5 ]$ J( t0 H5 S一、assert.h
; w$ u8 [/ F- j# M( [1、void assert(int expression);
$ X0 k! x: v! ~' t4 D: O没有返回值,如果表达式为假则调用中断。
, u. }- i& q; w- \二、ctype.h
& k* X4 ~/ p2 v* W# m8 T1、int isalnum(int c);% o8 H% ]& {2 r' p. Y9 G1 ?
检查指定字符是否为数字或字母! G: d& |9 s4 a2 B
2、int isalpha(int c);9 R' W8 C j, I
检查指定字符是否为字母; R, b5 [- t# ]3 @# q2 m
3、int iscntrl(int c);( ]; k8 H- `9 r6 Q( M3 ~
检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。) j( {% C+ a. j2 N/ H- A
4、int isdigit(int c);4 r1 h4 d; R0 q2 Z0 F8 I. K
判断指定字符是否为数字6 @9 X& R2 b; f" r( {) L
5、int isgraph(int c); {1 A8 p/ }1 l) ^- A; D8 f
判断指定字符是否为除空格" "以外的所有打印字符。
" r* i& F4 t4 V6、int islower(int c);
7 H& r0 }4 `0 T0 b判断是否指定字符为小写字符
2 @( S: F( p1 O7、int isprint(int c);" B1 O; S1 h) r' h, M# ^$ m0 {
判断是否指定字符是包括" "在内的所有可打印的字符6 ?" J6 x0 G5 J: B
8、int isspace(int c);
, T; r& c1 m6 ]0 A9 F5 p' x判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。( g2 Q7 u) G' Z( S) s' {
9、isupper(int c);- ^4 U2 f# |; A* R# C' r
判断指定字符是否为大写字符。
4 G3 k6 k' r. E5 y- `7 |7 T8 T10、int isxdigit(int c);
! N; {' U& C5 h, ^, H+ B可字定义区域设置,默认和isdigit一样。" e# Z, z' ~# N L, A5 l# I' Y
11、int tolower(int c);
* D* E) P% ]! I! q& O将指定字符转换成小写字符。
2 _' A! _5 ]2 t3 i12、int toupper(int c);
. H- s8 f8 S" ^4 i' J7 L$ u将指定字符转换成大写字符。$ e* m$ S5 z, L$ ~
三、errno.h8 U. ?. T- [2 ^! v) f4 n/ X: N; t6 y8 l1 c
宏部分5 L) W. h: u+ x% w9 m- ?
四、float.h
, S- t3 k/ Z2 l! Z8 e1 j( U宏部分,测试上下溢! l+ @ y+ m; w, S( `& z
五、limits.h
; {. ?1 C- d5 F/ w! B" n4 E宏部分
' N0 J, n3 W9 W6 k! O/ W, P! B六、locale.h
' q. Z; s7 B) \+ z g/ z( S% R两个函数、一种类型(struct lconv)、一些宏。
, ?, W' @0 q/ W2 E2 A; M3 ?, m1、char *setlocale(int category,const char* locale);
; Z7 l# ]+ I0 q. g/ n3 j2、struct lconv *localeconv(void);
u4 `4 j! h/ `9 i6 e七、math.h' q; L9 G, @+ k4 J& x6 U
三角函数部分:1 z. t- x6 C9 J( N8 |/ {! l
1、double acos(double x);$ ~' N! ]' ?: x" u* \
计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。9 U: y4 p$ G7 y8 [7 q2 @2 }
2、double asin(double x);
6 c/ t1 r$ d1 u8 s8 U( S% k# W计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。
8 d0 f1 l: @) Q. X" V2 h" q3、double atan(double x);
9 U$ t; C' B' D" V. S2 g计算x的三角反正切。返回值范围[-PI/2,PI/2]。. J' a/ }2 b- d; P
4、double atan2(double y,double x);2 U# B! n$ J' p) M |7 M
计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。* l) t8 r, a. s0 A+ W+ m" r
5、double cos(double x);9 s# n- B: W3 S' o
计算x(以弧度为单位)的余弦值。
1 L: E3 l2 D& @1 w" `# t( @+ [6、double sin(double x);8 ~. u: j/ s7 x
计算x(以弧度为单位)的正弦值。
2 q$ S4 R% r% c; x7 \6 @; w/ N7、double tan(double x);
+ P3 _! T3 `8 h, t( _* \返回x(以弧度为单位)的正切值。
q p* R! ^' d# W; W7 @' j4 y8、double cosh(double x);
$ @1 M" n% Z5 H- p返回x的双曲正弦,若x的值过大,则返回错误。. U9 J: W$ H, p) S& e- ?0 K
9、double sinh(double x);: k1 l0 v0 N7 Q' L3 P7 ^! A
计算x的双曲正弦,如果x的数值太大,则返回错误。
8 ^9 a9 X4 f8 | P10、double tanh(double x);
8 E3 c) b$ w2 E& t1 |计算x的双曲正切。
) u9 D$ H+ y: [$ e11、double exp(double x);- f" k+ H* R! h3 G8 _7 \
计算x的指数函数。: S# z0 t5 A& h9 j
12、double frexp(double value,int *exp);! a/ K$ w' u8 E3 h+ f+ P
把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。
; h. A3 w3 R8 y( a- ^13、double ldexp(double x,int exp);
# ~, V/ T% V+ F0 n: C I计算x*2^exp的值并返回。 ~8 u, d& V' Q3 J3 g; K- {! @- ]' s3 _, W
14、double log(double x);
$ R t9 F; k' m5 p' c# i计算x的自然对数,如果参数为负,则发生值域错误。' w% Y% r( O+ O' C- e0 Y1 N4 y1 q
15、double log10(double x);4 l/ ^3 ~1 H4 k1 ]
计算x的以10为底的对数。
( O$ x' E5 X0 `* z* p16、double modf(double value,double *iptr);
( m7 ~* V' S4 u2 @8 y! }+ Z4 ]将value的整数部分传给iptr,将小数部分返回。/ q6 J- B# o" M1 N
幂函数部分:" X; l# s* T; R
1、double pow(double x,double y);
- _% B: H `, g; `3 u, H/ j/ K* k4 X函数计算x的y次幂,要防止值域错误。
" Q: M5 C, r2 `( @2、double sqrt(double x);" V9 s1 x* M; i- Y: Z
函数计算x的非负平方根,如果参数为负,则发生错误。
& `" v) I& i9 ^取整、绝对值、求模部分:
% f4 G$ u$ v, g# u1 o; j1、double ceil(double x);6 H1 f5 u; q2 g5 s
返回不小于x的最小整数。变大取整。% h9 U. E8 A! c' k' ]7 a# a! g
2、double fabs(double x);
x; m& }& H+ L1 d返回x的绝对值。
' Y9 K) A* H6 g) S) ]3、double floor(double x);6 @1 q* K- T+ _% l% W% I9 ]
返回不大于x的最大整数。变小取整。3 y1 w: N2 B2 K5 Q% T4 a2 ^
4、double fmod(double x,double y);( U& j0 C3 M" X1 g
返回x/y的余数。) d$ F6 e1 x$ `# ~& b- Y
八、setjmp.h
: l1 ]) u& j4 V定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
, D4 n0 P$ y+ ]$ T5 c6 B用途饶过常规的函数调用和返回规则。
& H" ]3 ~; [; \# e8 _1 j九、signal.h
1 v$ o7 @7 \% W同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
! Z# P& {3 Y, B9 [/ a定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
3 g1 v" b* r* o$ C$ D2 Qvoid (*signal(int sig,void (*func) (int) )(int);" T; p1 r! f* x% x
通过设置三种方式对信号进行处理。
2 }' v+ G6 B8 M3 Z t% L& w! }6 kint raise(int sig); W6 T% F- |/ W h- X8 o7 Q
把信号sig发送给正在执行的程序。成功返回0,否则非0。
# W- n( R* G; T1 w3 n十、stdarg.h
2 l3 `: `+ ?( [* K可变参数列表。定义了一个类型va_list。
1 a% K1 \9 u* ` P5 {- X0 z宏:# R& h' W# T$ y) [
1、void va_start(va_list ap,paramN);
( k$ t2 _8 c4 D& W对ap进行初始化。
3 q! g* @0 g9 W0 ~- |2、type va_arg(va_list ap,type);
7 e$ ]0 M# e* ~- Y3、void va_end(va_list ap);% l, S, G) Z, v9 R& g
十一、stddef.h 被放到了stdlib.h, ^) ^* @" e6 d- d. F$ o4 V8 c$ n: N
定义了一些类型:
, K: s+ F5 y: N7 optrdiff_t 两个指针相减的有符号整数类型
$ U! h7 W9 F8 vsize_t 用sizeof操作符的结果的无符号整数类型" m I5 K& ^4 ^; l
wchar_t 整值类型
, w8 P- x: d8 ` e$ @ {4 _: k4 R宏:, N! D0 u( e/ l- U4 I- S" Q `" E
NULL 展开为实现定义的空指针常量。8 p% i6 W8 r% S1 H& m) B9 V
offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。
0 M3 B1 z% u7 E6 p待续…… |
|