设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 1842|回复: 6

C标准库学习笔记之一

[复制链接]
  • TA的每日心情
    慵懒
    2016-4-21 12:07
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    累计签到:3 天
    连续签到:1 天
    发表于 2010-4-23 12:34:18 | 显示全部楼层 |阅读模式

    马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

    您需要 登录 才可以下载或查看,没有账号?立即加入

    ×
    暑假的时候买了《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待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 2010-4-23 12:45:51 | 显示全部楼层
    弄个包包下载共享一下,楼主、
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    慵懒
    2016-4-21 12:07
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    累计签到:3 天
    连续签到:1 天
     楼主| 发表于 2010-4-23 13:15:02 | 显示全部楼层
    下载还花 你的钱 呵呵! 复制粘贴吧
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    擦汗
    2020-4-27 20:29
  • 签到天数: 84 天

    连续签到: 1 天

    [LV.6]常住居民II

    累计签到:84 天
    连续签到:1 天
    发表于 2010-4-23 14:12:08 | 显示全部楼层
    继续啊,在一个帖子里弄完
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    慵懒
    2016-4-21 12:07
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    累计签到:3 天
    连续签到:1 天
     楼主| 发表于 2010-4-25 19:53:32 | 显示全部楼层
    回复 4# zhpy
    $ ^; o7 A9 r3 C: }: c5 a" q9 S% u9 X+ {- c# t
    1 l9 M1 q, q% @: B
        常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 2010-6-19 00:47:47 | 显示全部楼层
    期待楼主的续。。。
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    开心
    2021-6-11 18:27
  • 签到天数: 167 天

    连续签到: 1 天

    [LV.7]常住居民III

    累计签到:226 天
    连续签到:1 天
    发表于 2010-7-14 00:11:55 | 显示全部楼层
    学习了。很有收 获
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
    您需要登录后才可以回帖 登录 | 立即加入

    本版积分规则

    招聘斑竹

    小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

    GMT+8, 2025-2-24 09:11

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表