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

 找回密码
 立即加入
搜索
查看: 1977|回复: 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 W' w4 P6 m# e6 R# S& S
    第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。
    1 |2 L0 f4 a$ o以下为头文件概述(上), s+ m4 I6 Z/ ?0 Z" f. x; L2 @( X9 o
    一、assert.h# Q' K+ Q' ]* `" U/ F
    1、void assert(int expression);' h$ \; f% d; R1 c* y- z
    没有返回值,如果表达式为假则调用中断。9 t8 n) M* D/ @% D. D+ X
    二、ctype.h
    2 j/ I/ {) a2 N& [! ~! Q; n' z1、int isalnum(int c);+ ?$ B" e) K+ M3 b% Y4 B" z
    检查指定字符是否为数字或字母
    1 A$ d; N6 D' V- k; t2、int isalpha(int c);+ ~5 K. d5 A( K# R0 ?
    检查指定字符是否为字母
    7 Q) \9 |# ]. }8 J  Y; M4 t, d3、int iscntrl(int c);. m. a+ W  C" g
    检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。8 ^0 I9 a3 ]3 }' @. b  o
    4、int isdigit(int c);
    " i. F8 D9 H- k" K4 S6 n! b& x8 @判断指定字符是否为数字" [/ l" j  X2 }4 r
    5、int isgraph(int c);
    ( q+ O( u8 {8 l$ r- b  t1 }判断指定字符是否为除空格" "以外的所有打印字符。
    / i9 \3 L0 R; Q. |# [2 A6、int islower(int c);. a) }$ k$ Y5 _! E6 I2 j* W: e5 V
    判断是否指定字符为小写字符
    ; ?+ S% S4 y4 N. }3 ~, [7、int isprint(int c);
    ( z1 \' o; c& ~) o判断是否指定字符是包括" "在内的所有可打印的字符1 L9 E: d, N8 o' U
    8、int isspace(int c);
    % @+ q& b) n2 r7 x判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。/ P5 ~; q% Z2 D: I2 s  B
    9、isupper(int c);
    % Q% d, _+ `5 F. R% _判断指定字符是否为大写字符。# O6 I; Q' `8 S9 q9 d  r, u
    10、int isxdigit(int c);' H! r; {- O# ?
    可字定义区域设置,默认和isdigit一样。
    7 r, u' e9 G/ |! i/ q; Y( k11、int tolower(int c);
    : \3 j- |: H; t: z% C1 x将指定字符转换成小写字符。
    7 f; ^# N1 y% U- K" |* Y6 C12、int toupper(int c);! T) ]" J' y( Z4 Z% U5 a
    将指定字符转换成大写字符。; D+ B6 G  m7 M
    三、errno.h
    % X' @! `& h( c: F. H* z3 x. Z宏部分
    $ `5 W4 _$ u7 Q1 F7 @2 j四、float.h
    % J2 ], f/ j  N3 f宏部分,测试上下溢
    0 p1 }& o) F: ?% z' `; }五、limits.h7 v/ R' Z. H# r" t* e" s
    宏部分5 F5 U0 G3 I; e
    六、locale.h% T) {# Q4 E) R7 E8 }! e% V2 b/ C0 C3 w
    两个函数、一种类型(struct lconv)、一些宏。6 _8 D  U/ J1 z
    1、char *setlocale(int category,const char* locale);
    1 {: j8 P3 H% C2、struct lconv *localeconv(void);5 b) Y' o0 t. m. M$ h
    七、math.h
    / k" l& h4 S  \! d& k; B三角函数部分:; E- J0 K0 z' J: o3 V9 N
    1、double acos(double x);# r+ K0 Z7 W+ k; K* _: D
    计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。! h+ _+ _0 X* E, t8 E  a
    2、double asin(double x);% O& ?: W/ E, X. }
    计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。
    $ f3 M5 N+ r1 b( W3、double atan(double x);  _. g3 _8 B' t/ a4 O& @# a$ L3 N
    计算x的三角反正切。返回值范围[-PI/2,PI/2]。
    : J9 e: h5 b" n$ |4、double atan2(double y,double x);
    4 S- Q( k, c' l3 ^3 N$ @. M计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
    7 m: h/ u0 s1 f: h$ j5、double cos(double x);/ \' J# t5 l9 y* L
    计算x(以弧度为单位)的余弦值。
    0 {& B$ M$ t' [# c/ u) D! f6、double sin(double x);
    , L; N* }: W4 I7 O- V8 g计算x(以弧度为单位)的正弦值。: K! {4 {1 h- y
    7、double tan(double x);; y6 q" z1 {1 {& ]) @; C0 @. H
    返回x(以弧度为单位)的正切值。# w' {2 v, i& n+ ]
    8、double cosh(double x);; e8 F  H8 X' @6 J# n# m" x2 t: o
    返回x的双曲正弦,若x的值过大,则返回错误。
    1 ]+ [( d( w; \$ H9、double sinh(double x);
    ( ^/ J$ l" {8 A9 h, _) }% u计算x的双曲正弦,如果x的数值太大,则返回错误。# k% W) z6 k& Z) D( a
    10、double tanh(double x);9 f, W" {5 \2 }, C5 X+ Z
    计算x的双曲正切。
    / Z1 A- l; T( @& ]) [9 @; G11、double exp(double x);
    8 M8 ]- {1 n0 V0 u, l" y1 X计算x的指数函数。* E! f8 X& `. g% m
    12、double frexp(double value,int *exp);- W8 f0 _+ y" V1 A7 ^; q. q& ^) k
    把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。1 N: o% D# j( Z  e
    13、double ldexp(double x,int exp);" \8 r! M: q5 Z' }- Y8 J( X" n( E2 X
    计算x*2^exp的值并返回。- a2 X9 r# j8 `4 p  d% N
    14、double log(double x);( |- J8 x/ I6 F3 y3 m, L. t
    计算x的自然对数,如果参数为负,则发生值域错误。* j- a/ [4 X6 t0 P  \
    15、double log10(double x);
    - l+ D( f0 K$ p, }5 }计算x的以10为底的对数。
    ; P, K" ]* O% e- R16、double modf(double value,double *iptr);5 u/ z) `. a2 ~0 d* L  d; R
    将value的整数部分传给iptr,将小数部分返回。: K6 O3 j& c/ D2 ~
    幂函数部分:
    & L3 U; o% w, D. X% X+ l! ^! O1、double pow(double x,double y);) |, P1 ]* ~% e: H/ e
    函数计算x的y次幂,要防止值域错误。" Y/ M! U- a- Z& i: \
    2、double sqrt(double x);, i  B1 Z" u- z' l! N* ?& Y
    函数计算x的非负平方根,如果参数为负,则发生错误。* O$ q5 H1 n5 k) B' Q- d
    取整、绝对值、求模部分:# Y" l1 I' T/ |5 L
    1、double ceil(double x);
    * G7 o7 l" J/ B- G返回不小于x的最小整数。变大取整。) w- x4 E+ @# }% u, ], K: W& j( S
    2、double fabs(double x);
    * j# e! ^7 K5 i' n9 W1 D返回x的绝对值。" g) ?: J7 P' S% O* u9 Z
    3、double floor(double x);
    $ A6 ~6 v: ~' _9 l+ v返回不大于x的最大整数。变小取整。3 k$ W3 L* c2 M
    4、double fmod(double x,double y);: ~2 F  q% w1 H3 w' Z. `- [
    返回x/y的余数。
    * O6 }: t2 Z; J' c八、setjmp.h7 c& e8 H+ k1 E2 k. e, ]6 ~+ Q
    定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
    & F- ]: z8 H- j: t$ t4 n" x! J用途饶过常规的函数调用和返回规则。5 g) w) t7 Q& v  P8 g
    九、signal.h' `! G, T/ {' a5 Q
    同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
    3 t5 z9 S8 Q2 s6 g定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
    - r; s9 O/ g' Y* G1 A' `2 N2 Fvoid (*signal(int sig,void (*func) (int) )(int);
    # \/ y) M" M% R通过设置三种方式对信号进行处理。" R+ G% R: l: ]: W5 u
    int raise(int sig);" B$ j* S6 C# N5 g3 h6 J3 o) W
    把信号sig发送给正在执行的程序。成功返回0,否则非0。# z2 _& G! y  w& L
    十、stdarg.h
    * `0 U4 l4 f5 _. j可变参数列表。定义了一个类型va_list。' {; }0 ~3 a) e. e! D- m
    宏:
    3 w# R- b8 R3 M3 M' x7 r8 h1、void va_start(va_list ap,paramN);  I! x/ g% i+ Z* |2 P
    对ap进行初始化。
    6 k0 T+ A! k+ L: _2 C% b4 l) f* \2、type va_arg(va_list ap,type);
    ( l3 _$ K: \9 B" U6 ~- O3、void va_end(va_list ap);! @9 B- F+ U' A9 d3 e# f# H
    十一、stddef.h 被放到了stdlib.h1 ^/ I4 _( g# T& _4 v
    定义了一些类型:
    ) P( U% X2 ], Pptrdiff_t 两个指针相减的有符号整数类型
    . _+ w8 b4 q. Csize_t 用sizeof操作符的结果的无符号整数类型
    7 x% l6 w+ Z& Ewchar_t 整值类型7 M: F# }* f& v2 e9 r+ r/ m
    宏:, U( t% c1 q2 y7 I% _6 J! }
    NULL 展开为实现定义的空指针常量。
    1 P  i" S+ Q* T9 h. Z+ woffsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。
    ) d/ o. j- }8 F* K0 |待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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
    8 [' `6 Y5 n7 R# ^: P  H- E1 R/ v5 c' P

    3 j1 |( a" T4 @: u- P9 ~1 T: F    常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    连续签到: 1 天

    [LV.7]常住居民III

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2026-3-19 06:36

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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