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

 找回密码
 立即加入
搜索
查看: 2078|回复: 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语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。
    - E4 Y3 n% m$ F第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。( ~& m2 i# I; E2 @9 e2 w
    以下为头文件概述(上)
      Y( \" e! N- d# f3 k2 d& e一、assert.h: Q7 t. @8 S+ ^( d( k! F
    1、void assert(int expression);
    ! M: C! d" M  a& J没有返回值,如果表达式为假则调用中断。0 l  k2 c, F1 f/ D1 J( b& b
    二、ctype.h& ?7 Z9 V7 R  k+ `$ X# K
    1、int isalnum(int c);; {. |" _  c- ~/ P3 b/ h) ~
    检查指定字符是否为数字或字母
    + f* m0 Q  o. ~/ p' y, J2、int isalpha(int c);
    ' i* p+ N1 x$ `/ o1 a; k( W& x* s/ }9 K& |- b检查指定字符是否为字母* ~3 a1 n5 x7 ?4 E8 w- g
    3、int iscntrl(int c);
    4 p' d" X: \) f! K检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。
    ! a: t9 w$ g! @; z7 t2 G4、int isdigit(int c);
    7 I( W+ S4 l9 h判断指定字符是否为数字+ _# ^8 B% h( B
    5、int isgraph(int c);3 V# m# `) ~+ p3 d4 I* ~- b
    判断指定字符是否为除空格" "以外的所有打印字符。7 A$ K9 g$ w% X
    6、int islower(int c);
    ( c- v. k7 `7 t- ]* c. f" i$ y判断是否指定字符为小写字符
    ; q" b- `, O) K& |# r  @4 E7、int isprint(int c);
    ) b. U7 k3 K8 s, F判断是否指定字符是包括" "在内的所有可打印的字符
    $ O5 g) F9 Q8 z6 G8、int isspace(int c);1 w5 i# r! }' K1 O- w0 r# M* }0 Y% r0 @
    判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
    # q! \' P- P5 ]  u) a0 x  F9、isupper(int c);
      O% K+ C6 u' o! Q' M判断指定字符是否为大写字符。9 x8 O+ s, c5 Z' k8 E
    10、int isxdigit(int c);
    ; A0 C$ X9 X  u可字定义区域设置,默认和isdigit一样。
    2 a  v! @' K1 _* _6 \1 x11、int tolower(int c);
    4 K" H$ B1 y1 `* `将指定字符转换成小写字符。
    ; A6 v) `$ U( Z. K12、int toupper(int c);
    5 O/ ^7 N" d, p# b. p将指定字符转换成大写字符。3 m& d& S: N3 s/ x
    三、errno.h* d% B  }. f  I+ j& {
    宏部分
    2 X2 P; W" d) E: Y四、float.h
    ' {* w" {. i0 m宏部分,测试上下溢
    $ k9 c  L5 }+ G: J: n$ [8 C五、limits.h
    * m1 o1 x$ C" g) H6 f' }' Y宏部分- t! m% v1 _- J  R" h5 S" ~- J# I
    六、locale.h) @0 l( K  f; L1 Q/ h& s7 U
    两个函数、一种类型(struct lconv)、一些宏。
    : [0 K# w: F* I8 \1、char *setlocale(int category,const char* locale);
    ; B8 ~6 b# M6 V2、struct lconv *localeconv(void);
    & N3 h7 y; J7 E2 M0 i- `9 z七、math.h2 s6 E2 ?- u+ z  w* V4 @
    三角函数部分:4 I, u5 H2 `/ V
    1、double acos(double x);
    + P8 |; u( e; [* u计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。3 A' X) P+ {( Q% T  k% v
    2、double asin(double x);! `/ p2 p: j0 X7 |) C5 Q: G
    计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。
    6 N- u9 k3 \  {: Z' F3、double atan(double x);
    % V' i0 T1 d; V1 g( g计算x的三角反正切。返回值范围[-PI/2,PI/2]。; n2 v1 k6 r. ^( k1 u  m+ O. s- l
    4、double atan2(double y,double x);
    2 E% b- [( C  i8 H计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
    0 e9 C2 b! `" r1 X- w) V5、double cos(double x);( g  a- ~6 q/ _+ _) M
    计算x(以弧度为单位)的余弦值。
    4 W2 P) R" `) ?8 V8 x4 e6、double sin(double x);6 ^: o! F  ^# @6 r0 l/ L
    计算x(以弧度为单位)的正弦值。
    & s2 c- S7 s9 K: c1 q$ F: d4 A7、double tan(double x);5 g! {. j. m$ L" F. \2 G
    返回x(以弧度为单位)的正切值。
    : P8 M# i( h9 u; C, e0 B" \8 t8、double cosh(double x);
    0 I& r! G& y% W0 K) `8 @返回x的双曲正弦,若x的值过大,则返回错误。
    7 p7 ?8 s3 e6 f3 o9、double sinh(double x);
    # R+ q6 B% i9 s5 J: ]# g计算x的双曲正弦,如果x的数值太大,则返回错误。( ~% e) Y8 P  D8 D9 X; H8 p
    10、double tanh(double x);& I0 a" }8 q3 s7 l
    计算x的双曲正切。/ R- q4 n8 Y: N
    11、double exp(double x);
    2 U8 n/ I6 Y$ D" d( W0 t$ @8 d& ?计算x的指数函数。
    0 e" [  [- G4 P, m( v2 t12、double frexp(double value,int *exp);% t. w$ m5 A+ E# ?, r9 a
    把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。. S8 x7 A  L* j. \
    13、double ldexp(double x,int exp);
    # s2 d1 a- U, C$ t+ q计算x*2^exp的值并返回。$ w2 @2 B& C, e# z
    14、double log(double x);
    ' \7 c, f7 x6 s5 D计算x的自然对数,如果参数为负,则发生值域错误。
    1 \5 X  B& H, `- U15、double log10(double x);) N9 [2 \8 N; c8 f
    计算x的以10为底的对数。
    ; ?! \/ f, w: J  i16、double modf(double value,double *iptr);
    . @$ Q& s! t! w. T. A将value的整数部分传给iptr,将小数部分返回。) E+ K9 x  K! e
    幂函数部分:
    . K; U+ \3 ^+ O2 c* z. r1、double pow(double x,double y);
    ; S; P  D6 O: a6 D函数计算x的y次幂,要防止值域错误。
    " c& \+ g5 k6 e1 F2、double sqrt(double x);1 Z* g' K* F$ B+ g
    函数计算x的非负平方根,如果参数为负,则发生错误。
    % ]8 x- A) c- Z- c- u取整、绝对值、求模部分:. X, f* K0 D1 e5 J
    1、double ceil(double x);2 l& w+ [3 Y% D! v0 ^- W
    返回不小于x的最小整数。变大取整。
    3 @9 F2 n- H6 E2、double fabs(double x);
    5 `2 ~; S3 }2 d( C- W; E返回x的绝对值。- j: ^1 H3 W9 f0 v+ \2 B
    3、double floor(double x);
    , `: z8 W7 M2 a3 u/ d1 e' {6 v返回不大于x的最大整数。变小取整。
    / N, a( ?/ t3 C: h# G0 Z$ T4、double fmod(double x,double y);
    + O: m8 [4 m' X) f! `返回x/y的余数。
    ' k6 a8 _% S* J# f八、setjmp.h
    $ Y7 u/ M: R1 N) b" C6 E. J2 [定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
    " g3 l  G( l5 f" H- w3 W用途饶过常规的函数调用和返回规则。
    9 B, D" T4 t" c% n九、signal.h  Z( H) m; D+ U( p& v/ O9 y" E
    同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。$ ?7 x' {- l* _6 e* d3 h+ Y
    定义了一个类型sig_atomic_t,定义了两个函数和一些宏:! h5 f4 _, E6 K8 R- z
    void (*signal(int sig,void (*func) (int) )(int);
    * U$ ~& X3 \+ d2 W# J% ~通过设置三种方式对信号进行处理。
    + n7 o. S0 w; N. u4 c* Hint raise(int sig);& P# l6 A5 F3 f1 ^1 ?
    把信号sig发送给正在执行的程序。成功返回0,否则非0。4 d) V; B  X- r. l: @
    十、stdarg.h% k; f: h7 F" S0 g# ~  x) n
    可变参数列表。定义了一个类型va_list。
    . a; H% L% |" ]9 ~( D; A2 q1 ]5 y宏:" m, d8 a4 q" e! x) D2 Q' k- Q
    1、void va_start(va_list ap,paramN);
    & A$ b/ F6 q; q* F- J6 m" [7 |对ap进行初始化。/ c+ w! W. V1 {5 D
    2、type va_arg(va_list ap,type);: i8 q% S0 t7 t
    3、void va_end(va_list ap);
    ; `" [" o! L: r4 t+ m十一、stddef.h 被放到了stdlib.h! A& k. q2 ]. U5 k
    定义了一些类型:
    - Q- K* T8 j# p6 z) Dptrdiff_t 两个指针相减的有符号整数类型
    9 [, M: V0 z' b* q" }+ S6 W% Msize_t 用sizeof操作符的结果的无符号整数类型, Y3 ~7 j7 T6 \4 G& U4 C7 \3 L# R  ?
    wchar_t 整值类型
    : Y- Q# B% c* j  E# a宏:) h7 I+ `. P8 B& a8 V- {
    NULL 展开为实现定义的空指针常量。0 b  y- X) L! Z& ~" G( q3 Q
    offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。0 D2 u0 \& G+ U2 ?8 K6 _
    待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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   z* R+ \: J6 f. P% t3 D/ {
    $ `  H. P. C1 E* V( h5 A8 z2 e7 v. f
    9 Z+ W3 h" w) _$ F' @+ v
        常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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-10 02:59

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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