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

 找回密码
 立即加入
搜索
查看: 1976|回复: 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语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。1 Q$ O+ F8 L8 ?3 h$ c, }
    第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。2 N+ n1 S! U# I! P" H& G2 w6 d& {9 G
    以下为头文件概述(上)
    $ w6 C& e4 ~0 h0 L一、assert.h& A8 @( w8 Q! I9 r1 I
    1、void assert(int expression);# M  {, J8 r7 F9 h
    没有返回值,如果表达式为假则调用中断。
    3 L# T& X* i! d% M# [二、ctype.h
    ( g2 m7 }7 c! Q8 k1、int isalnum(int c);- E- Q; l. @7 r+ J; a* b2 r
    检查指定字符是否为数字或字母: L. u( M- M  p0 Z% ?' b# h
    2、int isalpha(int c);
    + s4 K4 X7 T& O检查指定字符是否为字母
    4 S2 I2 I8 L+ v/ E1 M# \/ D! L3、int iscntrl(int c);
    6 G% M  o* y) i, R  T检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。4 Z0 s* O5 N1 m
    4、int isdigit(int c);. i+ [( Y7 d/ f: {' {9 i) M, e2 g# e
    判断指定字符是否为数字& F, |/ X; p& v6 N* U
    5、int isgraph(int c);
    1 F) P' O% c. G/ O3 \! Y; b+ H判断指定字符是否为除空格" "以外的所有打印字符。3 E5 n# f' ]1 f+ f. [
    6、int islower(int c);
    ' i) k! D3 h# o判断是否指定字符为小写字符
    1 J, d5 z2 i4 g. k0 k) U, u7、int isprint(int c);' q: Z+ X7 L# i
    判断是否指定字符是包括" "在内的所有可打印的字符
    + F3 H  ^, _8 S# T( u+ ]/ o8、int isspace(int c);
    ; F2 O4 r6 |) t+ n" f7 Y* F判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
    / i! X: M2 G4 [% V% X! Z: V9、isupper(int c);# V6 T+ V, S: T
    判断指定字符是否为大写字符。
    & {  P+ n! v+ K6 p" g10、int isxdigit(int c);' e3 w! H9 P$ T% S; B
    可字定义区域设置,默认和isdigit一样。
    1 [! {8 @2 {+ }8 W11、int tolower(int c);& I4 h8 q* N+ g# Q; _% e* z: E
    将指定字符转换成小写字符。  f6 t0 Q9 n1 f- O/ Z! o
    12、int toupper(int c);
    # a0 o# w% V: ^6 ]6 `将指定字符转换成大写字符。3 z( z- q, N9 x7 f9 H( e$ [9 r
    三、errno.h
    4 r# T+ g& {- l4 x" Z* M5 V) I宏部分5 o; ~+ t% A8 e
    四、float.h
    5 K/ y3 N5 `3 G宏部分,测试上下溢+ U# K/ ~& f$ C6 e6 p# {
    五、limits.h
    ) N; _, v5 q3 v6 e宏部分! I" }$ i7 M* s+ u4 u$ W! S
    六、locale.h) M; `# f9 k1 t
    两个函数、一种类型(struct lconv)、一些宏。
    9 Q% O6 U. [0 k1 j' u* j1、char *setlocale(int category,const char* locale);3 Y, g% @/ T# [8 I0 x' L7 W
    2、struct lconv *localeconv(void);
    9 P5 p' x& T- @$ T- a七、math.h
    9 ^; y7 Q' b5 j1 O4 x三角函数部分:9 `: h! L2 ~5 l! K3 t# I
    1、double acos(double x);9 ?. u0 b, U5 _
    计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。( I/ f, E: Y6 b! J
    2、double asin(double x);+ u$ H: `! k& h; K; K! C  ]. A
    计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。" a4 N. m7 @; x' w) {0 @; V" f
    3、double atan(double x);/ \' R; q' w4 ~) W+ |: d9 b  r
    计算x的三角反正切。返回值范围[-PI/2,PI/2]。/ q/ {, k5 L* r1 G
    4、double atan2(double y,double x);; _( q: E" N, t  m
    计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
    $ A& Q: M" P  `3 @' t# g6 i5、double cos(double x);1 m7 s, \0 b1 b) s  {, n7 k4 E8 `
    计算x(以弧度为单位)的余弦值。
    & Y; A7 m  L0 n' A" H6、double sin(double x);
    : [2 e& h! s' W计算x(以弧度为单位)的正弦值。
    ' o# W6 L2 d1 x+ `7、double tan(double x);
    7 ]3 a; k) r$ o# V8 i返回x(以弧度为单位)的正切值。
    ' z% E& ~" ?" g8、double cosh(double x);
    * C! W# s4 {. w3 E返回x的双曲正弦,若x的值过大,则返回错误。# x2 t; F* f, s& T! a& h% h: I
    9、double sinh(double x);
    7 [9 r2 t2 X: g7 u) _0 `计算x的双曲正弦,如果x的数值太大,则返回错误。
    * F# s; }- O) a10、double tanh(double x);
    " r7 F# x# s9 R( r; u/ e8 b计算x的双曲正切。
    " Y% g2 n( m6 ~6 A# y5 d11、double exp(double x);
    " G, _- F+ y8 K. W9 A/ D+ M# z计算x的指数函数。; P& G% G4 ]; [/ A
    12、double frexp(double value,int *exp);  p. B: ~$ Z: I  C
    把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。
    1 V* p6 S2 e) P. U5 c  h13、double ldexp(double x,int exp);% g4 ^9 O9 e2 F% J) L, J5 _
    计算x*2^exp的值并返回。8 E2 \( h3 S% z( n5 @; K6 H
    14、double log(double x);
    * `& R, p- ^9 Z; `7 O0 z计算x的自然对数,如果参数为负,则发生值域错误。' R" |# f/ U# i/ B
    15、double log10(double x);( h/ N$ i2 q3 E, G( z
    计算x的以10为底的对数。$ M8 m3 W( {* W- Q; a9 M
    16、double modf(double value,double *iptr);5 U( u( D+ ^! r! }3 f
    将value的整数部分传给iptr,将小数部分返回。7 G$ n; v3 C$ C. Q
    幂函数部分:# V5 |6 f' C, \* W% w0 F$ N* d. a
    1、double pow(double x,double y);3 }9 k% ^3 f$ r" l
    函数计算x的y次幂,要防止值域错误。
    5 b& V* P( r) ]& p2、double sqrt(double x);5 c& q$ B; T1 V: W+ c6 |  O
    函数计算x的非负平方根,如果参数为负,则发生错误。6 q, G' r. s' W& N) X* r
    取整、绝对值、求模部分:
    : a* Z* L8 w  \; U- C9 e1、double ceil(double x);, q( n: @0 W* C7 N. r+ k
    返回不小于x的最小整数。变大取整。
    $ R4 D/ A$ I5 Q( K9 W' k2、double fabs(double x);3 z5 Y  u4 N1 G0 f2 f6 u+ @, A
    返回x的绝对值。1 l0 k& n% @6 N9 }& Y( Y0 m: ~
    3、double floor(double x);
    0 |+ f0 ~+ h1 _返回不大于x的最大整数。变小取整。% o4 p' Q* b% L' W* F% _& F
    4、double fmod(double x,double y);& F1 t) d, b8 U6 I! t# _+ e
    返回x/y的余数。
    & Q) B# l; V4 p$ C" h0 j八、setjmp.h
    8 K$ O5 g; H# \# I+ }定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);: s! ^4 ^$ I+ U: S! L2 R% |
    用途饶过常规的函数调用和返回规则。
    ) g% z8 e' |/ B九、signal.h
    ! R. G" I) y, w2 o; j$ T同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
    6 r, t# o1 Z  k定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
    # }7 A+ r9 D6 S, E& \' l8 V& zvoid (*signal(int sig,void (*func) (int) )(int);6 l. c7 e) S( y9 I4 @
    通过设置三种方式对信号进行处理。
    ' J' I; {9 w( d7 i, a: g+ Wint raise(int sig);
    + w$ u8 A/ Q$ G4 |* C把信号sig发送给正在执行的程序。成功返回0,否则非0。
    6 _; x' F4 Q( M" v十、stdarg.h
    8 F1 O! |! F$ f0 ?( u0 w5 [: v可变参数列表。定义了一个类型va_list。
    / w2 }9 ]/ e; \; I) y# I宏:
    ; ^/ y( n; i4 G) E3 r' w1、void va_start(va_list ap,paramN);
    7 k' Y$ `2 b) @" W; B- I8 e对ap进行初始化。
    7 U- c/ T3 O. d) k( F2、type va_arg(va_list ap,type);
    5 L8 J, X! U0 D  x* X3 g3、void va_end(va_list ap);
    7 n! Y7 H- A2 D% v, n! _十一、stddef.h 被放到了stdlib.h
    5 b  I) m% g  x1 o定义了一些类型:# j# v! M. m3 C% M: W
    ptrdiff_t 两个指针相减的有符号整数类型$ X& Y% Q- s" W- @& }& M
    size_t 用sizeof操作符的结果的无符号整数类型
    : V. L; f. u+ F1 R( [) K, r" ^wchar_t 整值类型7 A( M: S* |$ v! z, |" s! x
    宏:( `: b$ Z) i( [' D/ c+ b* E+ ~, h
    NULL 展开为实现定义的空指针常量。
    ( ]5 U8 y( s6 Y' _offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。
    ! w8 f+ [& o6 X2 I0 h+ 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
    " s5 i% O! b1 B; F
    9 G, C2 B8 i: c7 `( o! ?1 N
    6 }7 D! I  s1 A) `9 g* K$ Q    常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    连续签到: 1 天

    [LV.7]常住居民III

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2026-3-18 18:15

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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