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

 找回密码
 立即加入
搜索
查看: 1975|回复: 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语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。7 R! }8 r( _4 {2 {" }/ b+ C% M
    第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。9 a: y5 F1 \6 x' N1 J8 B3 _, `
    以下为头文件概述(上)# {# V$ V5 b- o7 J
    一、assert.h
    8 d$ Q- a$ S1 R+ N( L& Y1、void assert(int expression);
    * U) j8 L* n, G没有返回值,如果表达式为假则调用中断。
    ) ^/ H% N* {4 P1 K: S二、ctype.h
    # y" z2 w8 w2 o" b. a9 C1、int isalnum(int c);& d' [# \, I: Z/ @: w
    检查指定字符是否为数字或字母
    6 a! B6 U+ _% V+ ?9 S. o/ R2、int isalpha(int c);
    + d5 ]6 C$ `% Y% {' a" \检查指定字符是否为字母, S5 l. Z: a9 q6 D9 J4 Z
    3、int iscntrl(int c);# \3 j1 m! |2 P% B9 }
    检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。
    1 J" t  ^9 M/ k2 F; P5 o4、int isdigit(int c);
    * Z+ B# k* F  D- i/ n/ U判断指定字符是否为数字  ?8 |# p- P0 [  V* x
    5、int isgraph(int c);
    ' c, _; D) F  W判断指定字符是否为除空格" "以外的所有打印字符。- I/ M3 Z$ }; D: ^0 o( l4 d4 a  }
    6、int islower(int c);% r9 N) ^7 H* B  Z* `+ J/ I
    判断是否指定字符为小写字符$ N0 K' o* i0 B! }  r
    7、int isprint(int c);
    5 m2 e4 D7 R# j: k判断是否指定字符是包括" "在内的所有可打印的字符
    - E* X" S7 U- r( d8、int isspace(int c);
    + D9 E: z. p, ~* A, U3 A& _判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
    % J% P7 m9 \5 o! F4 r5 n. H/ B9、isupper(int c);
    4 M$ B4 u/ @( ]& m* |判断指定字符是否为大写字符。# O5 ?$ n8 @; z+ E7 W! c
    10、int isxdigit(int c);+ W3 B5 s+ F! I2 p9 S3 q
    可字定义区域设置,默认和isdigit一样。
    ! r4 d1 x( J) S& v  U11、int tolower(int c);& c8 f4 Q) U% @( Q; G- X  u
    将指定字符转换成小写字符。# f6 Q: O7 z7 Z% [" U
    12、int toupper(int c);
    5 |+ \2 s6 g  |# G6 `: f将指定字符转换成大写字符。4 n4 s/ h% ~8 s5 }
    三、errno.h: f' k+ e9 e$ I
    宏部分
    8 D; w- k  y+ Z. ^- F- l四、float.h- U* ~. X. m9 e" T3 t
    宏部分,测试上下溢' C+ \0 C5 O. l' z* l
    五、limits.h
    6 z0 A$ y, ]/ k5 ?' r# A, B# u宏部分
    ! d2 Z1 S6 b0 ~( m0 P  F六、locale.h
    8 P) N$ Z: U* h8 T/ \- }' q: c两个函数、一种类型(struct lconv)、一些宏。; v$ Z3 L* b$ q$ e
    1、char *setlocale(int category,const char* locale);# I0 ?3 q: a+ c
    2、struct lconv *localeconv(void);
    ' p" b  J, ]' T七、math.h
    ) e5 _. E% o7 s1 i  P# F5 P4 A三角函数部分:( b! M5 c( |2 d
    1、double acos(double x);4 `% O8 s& ]( W: l+ ~( Z# s8 H
    计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。
    # |/ Z  R5 Y) C% {( Q2、double asin(double x);
    ! @. j9 }: W$ {( x计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。  |8 \  m4 q$ ]1 ^& Y4 L# l
    3、double atan(double x);
    ! I! q! r6 i$ X) S4 x计算x的三角反正切。返回值范围[-PI/2,PI/2]。/ u, z/ J5 I+ ^- [) C8 e
    4、double atan2(double y,double x);
    # ]) }( _6 H$ o) Q3 D计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。0 S, y: Y/ P( D
    5、double cos(double x);8 I  c7 ]7 u6 f8 V. T4 D) V
    计算x(以弧度为单位)的余弦值。
    7 d0 f: \; g0 x8 @, K1 T6、double sin(double x);
    " n3 s, T( R% G1 T0 T4 l* X2 y) E计算x(以弧度为单位)的正弦值。, p, G) u2 @- \4 L2 R1 T! ?
    7、double tan(double x);) e2 x/ i) M( N/ |
    返回x(以弧度为单位)的正切值。9 T$ v2 w7 K  s! V8 X
    8、double cosh(double x);
    . _) L( a& k! @9 A返回x的双曲正弦,若x的值过大,则返回错误。
    : Z( g  K7 R0 V3 P7 S9、double sinh(double x);
    ! {6 K) n& C3 s+ R9 g计算x的双曲正弦,如果x的数值太大,则返回错误。
    $ s! W; b8 t0 F) W10、double tanh(double x);
    " u1 t* J, c) F/ V- y计算x的双曲正切。8 U6 S' \& E4 E4 v5 ], ^' l+ o; h
    11、double exp(double x);
    $ C: _: ~4 b& B计算x的指数函数。0 d# g0 w. W# a0 I
    12、double frexp(double value,int *exp);3 ?3 X' j" {- W) B" z: `
    把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。9 M7 }4 {& h& O1 ?- E: y) u
    13、double ldexp(double x,int exp);
    3 a0 x7 o: F- V; n3 u6 k计算x*2^exp的值并返回。1 ?* h" ^  D3 p# O$ F
    14、double log(double x);. L& _# \' A# W' V8 r6 u
    计算x的自然对数,如果参数为负,则发生值域错误。
    ) B, t/ d" r; p: ~15、double log10(double x);1 _2 u# ]4 y7 F2 E3 B
    计算x的以10为底的对数。/ @: }8 m' X* |. H+ z; c& X9 k
    16、double modf(double value,double *iptr);
    # }8 Q# O' B( b+ L) ?将value的整数部分传给iptr,将小数部分返回。! M0 U- B" R$ v5 p7 p
    幂函数部分:0 g0 y9 J7 R* N/ K6 D2 z" v! D
    1、double pow(double x,double y);' D  ]3 X; n# B$ }
    函数计算x的y次幂,要防止值域错误。& ^) S( }4 c- J' {. p( r
    2、double sqrt(double x);) ^' ]" c" \. t) m' q! K! _" z
    函数计算x的非负平方根,如果参数为负,则发生错误。" I2 j0 l3 Z' q3 H! s: _
    取整、绝对值、求模部分:6 r# a, L& z0 D+ y$ p- N3 j
    1、double ceil(double x);
    0 u8 d- ]4 ?1 `2 r返回不小于x的最小整数。变大取整。
    5 {1 W5 Z; Z  ?5 [4 l0 w1 n2、double fabs(double x);
    % T( e% A4 T! [& U返回x的绝对值。6 Q! W( A: m& \* F) d8 m5 O: s
    3、double floor(double x);$ A$ ~# G  M: t8 E- M6 }
    返回不大于x的最大整数。变小取整。
    3 G# \: d. B- {4、double fmod(double x,double y);
    7 B( t6 f7 W. J+ I+ ]; b返回x/y的余数。% R7 u* p% m6 L2 m8 P/ n
    八、setjmp.h
    3 w; d/ r3 M) C! n% t: c" L4 E定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
    6 A/ K% r+ }& a! B5 {. v. o0 T用途饶过常规的函数调用和返回规则。
    0 N4 [; o5 X/ U# ?8 z% ?/ `九、signal.h
    ; R* P0 U1 ~$ l# g& Z1 F, o同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
    # e2 z. p$ T# @7 u定义了一个类型sig_atomic_t,定义了两个函数和一些宏:) o. I) e  f* o8 x4 p3 y
    void (*signal(int sig,void (*func) (int) )(int);
    2 {+ L) |' T! p  w2 i5 ~通过设置三种方式对信号进行处理。
    7 Y7 s0 Z. u, f" C, N$ V2 {int raise(int sig);
      i; E% s8 A! ^' o  v5 W5 \把信号sig发送给正在执行的程序。成功返回0,否则非0。0 v# E( n3 \% C5 b
    十、stdarg.h
    4 r5 ~  A7 [0 [6 F3 Y  T9 _6 \可变参数列表。定义了一个类型va_list。# S4 t# ?  i- J) D# J9 v
    宏:5 p$ C: h% @7 i! }
    1、void va_start(va_list ap,paramN);
      r7 }- B7 a* q) ^% e对ap进行初始化。, H- ]& V8 z$ y9 c8 n
    2、type va_arg(va_list ap,type);
    , n4 y5 m3 g) ~# V3、void va_end(va_list ap);) j1 f# W2 @( r2 L0 J' i
    十一、stddef.h 被放到了stdlib.h5 Y# P. c# ]2 D. _* v5 @
    定义了一些类型:
    ' X; U0 @0 L, hptrdiff_t 两个指针相减的有符号整数类型1 {% F6 I. X0 x; h4 [( E3 l/ }1 P
    size_t 用sizeof操作符的结果的无符号整数类型% l8 ^' \- _! |# d/ ?
    wchar_t 整值类型
    3 j# U! Q3 `& g宏:
    & ]7 M; D0 d  i7 @5 w' e& YNULL 展开为实现定义的空指针常量。
    + i+ j( p6 p7 o( f  x; b7 o0 Poffsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。  E1 @3 ~# t' q1 p/ x
    待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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 5 P9 V% C7 d* P. P7 d9 d! _
    6 h" _$ f8 E5 C; J. ~( N
    % @3 i8 ]* n4 ?" |. U' d3 W
        常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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