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

 找回密码
 立即加入
搜索
查看: 1841|回复: 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语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。& S. M8 V" X* R, e
    第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。
    . u% m; O  c# z以下为头文件概述(上)4 q& O/ ~) R0 X! z; O# C7 s$ q
    一、assert.h
    " E! s% x: f& _; O0 L$ b. r7 j7 ]$ F1、void assert(int expression);
    1 I/ @1 N) A" L! U没有返回值,如果表达式为假则调用中断。9 ^" \$ Q6 D/ X' i* F/ i3 r" v9 Z& z4 M9 S
    二、ctype.h
    8 ~4 V! l( ], @' S$ t! ?$ Q1、int isalnum(int c);
    ; @0 I9 m, O$ @( W+ F: W) ^" Q检查指定字符是否为数字或字母
    0 i2 g: F& c2 [2、int isalpha(int c);+ p( p6 U1 w: P0 j, Y3 _) X. U
    检查指定字符是否为字母9 l/ w) e6 G5 N" }! t
    3、int iscntrl(int c);
    . O: V! I& K* V( h0 I检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。2 ?/ u. e  k. [# f4 h
    4、int isdigit(int c);
    % Q- g- l7 s5 z9 e判断指定字符是否为数字4 x' j3 w* C+ H, O5 g
    5、int isgraph(int c);
    ; m2 S' b) |% R& A4 [# ]判断指定字符是否为除空格" "以外的所有打印字符。
    ( H* f2 F2 v+ [5 w7 Z' |6、int islower(int c);1 ]" o% W, Z# b
    判断是否指定字符为小写字符
    ; G, B/ j1 C: t5 p0 i6 B& N7 `7、int isprint(int c);" x+ ]( V* i9 e3 a
    判断是否指定字符是包括" "在内的所有可打印的字符' z$ I/ V8 ?! O* H1 r
    8、int isspace(int c);3 y  o( M( M% G: h- ~
    判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。; ]* j( c+ _! \$ N8 C# `6 e* d: U
    9、isupper(int c);
    " C% o* M/ _5 y  ~判断指定字符是否为大写字符。
    1 W* c4 K# k+ e+ o: j10、int isxdigit(int c);
    . u, s0 ?2 n+ a$ q  ?0 V3 G可字定义区域设置,默认和isdigit一样。5 C6 v- w5 e/ [, U( U' h
    11、int tolower(int c);* h2 V! v! Y$ ^7 x+ b9 z* [; s
    将指定字符转换成小写字符。
    6 o" S6 ], p, I12、int toupper(int c);
    7 A; Y  b% K& c2 `) z# u将指定字符转换成大写字符。
    8 J' B4 ~( F8 B! J" P三、errno.h" [5 K/ d: \; J2 ~; x
    宏部分0 u' c6 i% q, ]2 Z2 W# R, @. j; E
    四、float.h
    " Z- {; V# S8 A4 Y. z4 ~/ v# u; K宏部分,测试上下溢1 b3 \, `: N2 R! H
    五、limits.h
    5 B) M; L3 c* t; O1 i3 \宏部分& D1 A" t. i0 m5 ~( I4 n7 y( \* ]
    六、locale.h' M( v, B# z7 D$ N
    两个函数、一种类型(struct lconv)、一些宏。
    6 r( s: }, @, H# u6 U6 w1、char *setlocale(int category,const char* locale);
    ; y& h2 M/ C' p; U' o8 Z* I' C) q2、struct lconv *localeconv(void);
    : n1 C! g2 U# Z9 E  g% w七、math.h
    # i0 h/ i& \1 p$ P- k6 E3 k三角函数部分:$ [+ T' |7 s: F7 W5 j& h/ f, k% ?
    1、double acos(double x);
    ) ~$ X  ]- @& l& z3 f计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。
    ; m, k9 w* ^4 x2 ^' }% I" G2 Q5 i. w0 [& q2、double asin(double x);
    3 j4 g0 u) U/ ~- q计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。+ k- s5 O4 ]. c. [( q- m
    3、double atan(double x);
    . @2 F3 w/ f# s! f$ i计算x的三角反正切。返回值范围[-PI/2,PI/2]。
    4 p9 M4 P% K$ u8 ~" _4、double atan2(double y,double x);' ?2 O/ F! r4 P$ A
    计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
    - q, L  G) p% K5、double cos(double x);
    & t4 r$ k0 j  s2 M, O; F计算x(以弧度为单位)的余弦值。, `! w$ I9 S/ s! Q; H
    6、double sin(double x);
    6 `; N) m1 O* y计算x(以弧度为单位)的正弦值。
    ( r* o; T6 n" Q7、double tan(double x);
      @/ e/ m& ~# F: T9 z7 R返回x(以弧度为单位)的正切值。: p/ h6 [' U9 {+ S1 z7 J  |& _/ b* I
    8、double cosh(double x);
    - P0 r! a2 H* @& q0 p返回x的双曲正弦,若x的值过大,则返回错误。" ?: u. s: m9 u
    9、double sinh(double x);% I8 B) ~0 X6 _3 r$ n* I
    计算x的双曲正弦,如果x的数值太大,则返回错误。
    % D0 c) A- R8 s9 x) V4 z+ Q10、double tanh(double x);
    6 o( V$ k! j+ y8 D2 m. V) E计算x的双曲正切。
    + Z/ M3 m7 C. R( G: O11、double exp(double x);
    # w9 g: l5 N5 U" M9 P, Y% ?2 v8 S计算x的指数函数。
    ' E( e6 ~& i' H1 L5 H12、double frexp(double value,int *exp);
    * `3 ]3 b! |, `- r# ]- T把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。7 w. u) Q- U$ ~9 ~" _. B
    13、double ldexp(double x,int exp);$ R, v8 |: t* u
    计算x*2^exp的值并返回。
    " K! [+ G: Q7 `# r, k! G1 m14、double log(double x);
    ; B; {' Q% k! d: j5 \计算x的自然对数,如果参数为负,则发生值域错误。  g: x9 s" D; [* n3 l
    15、double log10(double x);
    " c" E4 q; n, }( g计算x的以10为底的对数。
    / W- \8 j8 s7 Y% P5 u! J16、double modf(double value,double *iptr);) T7 J3 ~' }3 v. Q" J8 v6 t2 p
    将value的整数部分传给iptr,将小数部分返回。9 I0 w2 S! X6 K! M$ q( g: j
    幂函数部分:
    . y0 o" N) f, V" \8 H) d5 J1、double pow(double x,double y);
    5 y/ z: u# m5 g6 q函数计算x的y次幂,要防止值域错误。( M6 f( G* u! I8 D' J9 D% @8 L
    2、double sqrt(double x);. ^9 T$ _$ @8 S9 ~, v+ J
    函数计算x的非负平方根,如果参数为负,则发生错误。0 r/ g+ S# D: ]; `* Q% d* q
    取整、绝对值、求模部分:( A$ G7 N2 Q( |3 N' c
    1、double ceil(double x);1 g* ^0 ?' v# m6 R* `, ]3 G: B
    返回不小于x的最小整数。变大取整。7 q9 L$ p; D4 K8 E
    2、double fabs(double x);
    ' h! u  j8 I0 q0 T返回x的绝对值。" ~; u$ b+ `  J, F: g  G! y
    3、double floor(double x);
    2 Q+ W4 B5 J( F/ h3 V' {返回不大于x的最大整数。变小取整。
    % e- |/ F/ P8 k( C! f, e  c4、double fmod(double x,double y);. @! s/ o# U3 k0 L
    返回x/y的余数。
    2 Q8 a9 h" I  J4 n" y4 G, @八、setjmp.h
    9 Z4 Q" y5 i: U定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
    : @: ^8 |6 c% Y. Y% F  p用途饶过常规的函数调用和返回规则。
    - G6 T) Q3 \0 n. l" J九、signal.h
    3 U& z- I; ^; h# P7 j) z2 O& [同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
    " Y' ]; V3 p2 ]: }定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
    8 T& `7 R3 K5 L/ Svoid (*signal(int sig,void (*func) (int) )(int);. \; S$ K* x/ B7 k6 l: I
    通过设置三种方式对信号进行处理。
    2 M3 g/ f+ ]6 g, C0 }int raise(int sig);% ?. _+ J& Q9 E. p# Z
    把信号sig发送给正在执行的程序。成功返回0,否则非0。5 d' j7 k2 c; x/ Q4 C
    十、stdarg.h
    2 v+ c6 f9 B5 w) C6 P可变参数列表。定义了一个类型va_list。) C6 g9 c  `+ Q4 W
    宏:
    . E' M; R- i2 G/ e/ V2 r1、void va_start(va_list ap,paramN);3 k3 @, n( Y: P1 ~7 G* l/ C( t- F
    对ap进行初始化。, z/ A; n$ d- @  t! Q
    2、type va_arg(va_list ap,type);
    , \$ k9 H$ b% q, n) ~3、void va_end(va_list ap);; G  N% i& g2 @" g3 D  P1 h
    十一、stddef.h 被放到了stdlib.h
    - I, k  u4 }7 g3 [* o* w- q* E7 Z定义了一些类型:  ~% M$ j' x% w8 M9 p4 T( G$ C' N
    ptrdiff_t 两个指针相减的有符号整数类型
    # p" ^) G& I& }+ ysize_t 用sizeof操作符的结果的无符号整数类型  P7 _3 N$ v* k' m2 `* ?* t) l
    wchar_t 整值类型4 v! H" o3 S! Y8 m* }0 K
    宏:! ?+ ^( [+ z( Z/ r- M
    NULL 展开为实现定义的空指针常量。
    . n/ [" @  G( C- O8 a7 g5 Moffsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。$ `! x- X5 F0 v3 E3 t
    待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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 9 l) N1 M' {& z8 K! l
    # b9 q* x8 K) N! x

    9 f& L: A' E9 D- n- S    常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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:06

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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