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

 找回密码
 立即加入
搜索
查看: 2091|回复: 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' m' d1 g" K+ X第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。, [" |) Y& r: I& n& U
    以下为头文件概述(上)! S+ M3 C( p2 Z2 ^' U8 m
    一、assert.h
    ! b& \: I0 t( E5 s# B) _! E3 v. A1、void assert(int expression);
    % M  g/ t+ g) [1 D: q没有返回值,如果表达式为假则调用中断。$ V) {1 [8 h6 B; b/ r
    二、ctype.h
    + ^9 \4 P% o2 c2 V  e: l1、int isalnum(int c);, c! t1 d. t" z7 n0 m7 W
    检查指定字符是否为数字或字母: n% ]) I9 _  P" |# {
    2、int isalpha(int c);3 |3 a! g/ }+ r$ c+ U$ l+ B2 ~
    检查指定字符是否为字母
    + h/ S; W0 b* J6 H3、int iscntrl(int c);" i1 c+ \- A$ [9 Y
    检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。- a* d& n5 z- ~/ b" s; c
    4、int isdigit(int c);
    6 B2 A2 a1 m( S  c+ y判断指定字符是否为数字, @, C- a) x" L: t5 J2 G
    5、int isgraph(int c);
    ; y( m$ E# e" ^判断指定字符是否为除空格" "以外的所有打印字符。
    / N5 Q, n* ], R6、int islower(int c);% ?  T; T6 G- }/ z  n: w- J
    判断是否指定字符为小写字符
    4 c0 J, }- P9 X  ?/ P7、int isprint(int c);
    1 x9 I3 N+ Q$ d; u判断是否指定字符是包括" "在内的所有可打印的字符# x9 q: j/ x+ p+ H  w
    8、int isspace(int c);
    5 i4 E: v- O; \5 Z9 e判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。/ d& }8 x: g  `
    9、isupper(int c);* S* P& `4 s2 x- f
    判断指定字符是否为大写字符。; ]# }) h* E7 z1 x
    10、int isxdigit(int c);
    0 D" x9 l$ Y' i+ J& L可字定义区域设置,默认和isdigit一样。1 n+ N, {2 u* z$ v9 s' o- B" ~
    11、int tolower(int c);/ ?" e5 |  C- `, }8 i/ |
    将指定字符转换成小写字符。3 E3 v, a/ M) @( q! [- V1 t- N5 O
    12、int toupper(int c);
    + K' \# O  D  G* r. f" r将指定字符转换成大写字符。
    . r$ l& W- M% X$ T三、errno.h
      Y# f1 ]% X- q7 }) k5 ?宏部分
    * |" ?9 p0 R0 X* M四、float.h
    0 }4 s$ N# w) S; ^% {" y) [宏部分,测试上下溢  B- q  X- ~" a% ~" ~! B0 z
    五、limits.h$ i1 p2 \% y+ Z5 m+ F
    宏部分( n% M) M& A5 U- I, z, ~
    六、locale.h/ l- `$ v: D. L( q7 H# V* S; R
    两个函数、一种类型(struct lconv)、一些宏。, O: M6 F0 v! T- t% i8 _1 X8 n
    1、char *setlocale(int category,const char* locale);
    7 M/ ~5 u; l; ?1 M) m2 J0 R2、struct lconv *localeconv(void);
    # `6 v! h7 b, i2 W2 q0 [1 Z3 v七、math.h
    1 `! k" u9 r- ]; z三角函数部分:! e6 p4 o$ B/ N7 A$ i
    1、double acos(double x);
    ; E% Q3 ^1 B# a; D计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。
    % G/ Z# ^; N! a8 g) ?2、double asin(double x);* P, f2 [% ?3 j9 x% R# Z  g
    计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。
    - g8 g$ Q5 E1 l9 p3 X- b( g; l3、double atan(double x);
    ) ]8 x. O6 |5 W9 ]1 _/ o3 |5 G计算x的三角反正切。返回值范围[-PI/2,PI/2]。
    / ]  L; \7 t% @! V' W# r' J+ N4、double atan2(double y,double x);" L8 l9 z7 N* @/ s
    计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。) g  v( d6 ~2 X0 ~: N0 \
    5、double cos(double x);) i+ U+ l# F6 C4 z5 l
    计算x(以弧度为单位)的余弦值。
    2 ~( S% g- f1 ?! A6 a  P! z6、double sin(double x);
    ; `# Y! O! W( ]计算x(以弧度为单位)的正弦值。4 {! O& M7 j# }  L2 p
    7、double tan(double x);
    & ?& k' T3 ?( Y' m返回x(以弧度为单位)的正切值。
    ! O' t, @2 H) p9 ^, ~8、double cosh(double x);
    ! l' E3 n* ]: H: y/ w# U返回x的双曲正弦,若x的值过大,则返回错误。
    1 u  q2 j! d# D6 B6 R6 q% V9、double sinh(double x);( j/ X" \+ a% d
    计算x的双曲正弦,如果x的数值太大,则返回错误。: k7 _+ Z( `! K' ]" L
    10、double tanh(double x);
    3 K; |5 ^; I1 o6 K! G计算x的双曲正切。$ q- u; U4 h, J+ `. G5 F0 {) p
    11、double exp(double x);
    * J3 [4 z, B4 M" j计算x的指数函数。2 W; H! \# s# E+ `. V: H, P, [
    12、double frexp(double value,int *exp);: m3 |/ Q) c* m; E" d6 f! E
    把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。
    7 {. ^. _$ `& f13、double ldexp(double x,int exp);# L5 W9 a, V; K! N$ Z2 k
    计算x*2^exp的值并返回。
    1 n, W' p; F" j  H1 ~14、double log(double x);
    / O/ T, _3 e, q; y1 o计算x的自然对数,如果参数为负,则发生值域错误。
    4 y) a* ~4 b- v% h7 j15、double log10(double x);$ d+ A: M4 Y4 N- R# p" ?
    计算x的以10为底的对数。4 g4 {  {$ T7 c
    16、double modf(double value,double *iptr);, _6 F+ w! Z) T# ~. c1 N2 [
    将value的整数部分传给iptr,将小数部分返回。6 w: K* l# g2 X! g
    幂函数部分:% M# B3 f! N7 U( A- ]2 T
    1、double pow(double x,double y);- X/ S) h- b- W+ N5 U+ h$ L8 W# b' A
    函数计算x的y次幂,要防止值域错误。
    - K6 L7 q3 ~2 S2 Z# o  v2、double sqrt(double x);* X3 c+ Z" r9 R! D- p
    函数计算x的非负平方根,如果参数为负,则发生错误。
    # m# I! v$ a8 f2 {( o) g( K9 B& u6 Z8 \取整、绝对值、求模部分:
    3 r) ~  W( t4 Q) T# O1 F1、double ceil(double x);' L! J) ]6 O6 ~
    返回不小于x的最小整数。变大取整。
    9 l  w: l7 d+ K& w1 }2、double fabs(double x);
    , [' {0 g0 ?8 U' y8 V* W; B0 D. z返回x的绝对值。& K( s* i" x) x  h/ F% i
    3、double floor(double x);6 s, a3 L) g# d5 H- c+ h
    返回不大于x的最大整数。变小取整。& U6 M* ?3 C0 }& E  s+ t
    4、double fmod(double x,double y);
    + \" y4 F: f  b, X$ ^( W返回x/y的余数。
    / m+ n5 }4 U5 Y* g5 C5 H1 j八、setjmp.h6 t% [, }2 P- u: K9 N
    定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
    6 W& \8 P7 a) F# Z! ~& V$ l8 p( C6 r用途饶过常规的函数调用和返回规则。
    , k8 ]* ?3 G, x- [: c9 I% C/ S5 u九、signal.h8 B) y+ V# G6 {$ E$ R, \4 t
    同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
    0 v, n+ [+ x/ W6 \定义了一个类型sig_atomic_t,定义了两个函数和一些宏:+ m3 n9 m) P3 {. a) V+ V: ]
    void (*signal(int sig,void (*func) (int) )(int);. D0 g/ Z: [3 V/ g- {
    通过设置三种方式对信号进行处理。
    5 L' Z) @( }! R! ?$ ]. ?int raise(int sig);4 B! G: L$ A. b! j1 _
    把信号sig发送给正在执行的程序。成功返回0,否则非0。
    " \9 D3 k' W; I十、stdarg.h
    . O. n: r0 d, b# M9 B) P可变参数列表。定义了一个类型va_list。
    * c- y! E, v1 F8 K4 p宏:
    6 l2 g" j6 ~1 h9 n. T1、void va_start(va_list ap,paramN);
    & D" H; R  V! x对ap进行初始化。
    2 T( U2 t$ H" ^6 ~6 s: K4 V5 }2、type va_arg(va_list ap,type);
    6 G: `5 o/ m/ `& Z) u3、void va_end(va_list ap);
    ' T5 u( _4 C6 e& j( z- T0 v" t+ H十一、stddef.h 被放到了stdlib.h# u" F- N' Q( t0 C: X2 B$ d
    定义了一些类型:; ~5 I) T, R3 J* C" K
    ptrdiff_t 两个指针相减的有符号整数类型+ R) R0 N) J* e  l
    size_t 用sizeof操作符的结果的无符号整数类型3 ^! F" l( `- `* d7 Y
    wchar_t 整值类型
    - p- w3 r- {8 z) @宏:( V- _) x' o9 z$ P+ n% G# G1 v+ p- X
    NULL 展开为实现定义的空指针常量。
    4 a: V3 M# L4 W- i+ Q3 w1 _offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。
    5 Z# U- ?2 d9 R% k- W待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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 3 X& C4 ], B9 w: m0 c- R' ?
    ! K1 ]# p$ i! |$ d$ E' \% p

    ; y! S- `. ]( i  P    常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    连续签到: 1 天

    [LV.7]常住居民III

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2026-10-31 02:09

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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