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

 找回密码
 立即加入
搜索
查看: 2079|回复: 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语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。/ M$ L0 i! B9 H) N% ?
    第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。9 T& s; `, B/ v
    以下为头文件概述(上)$ `$ B, [2 L  m3 r* K
    一、assert.h6 h# w6 O4 G. f# K
    1、void assert(int expression);
    * X" v* g0 c' F9 x7 Z4 h2 h6 q没有返回值,如果表达式为假则调用中断。+ s0 u' G! i2 r8 W+ Q
    二、ctype.h8 Q9 O; r2 m3 I* R  \: t' g
    1、int isalnum(int c);0 ~& I$ H; A) [( X
    检查指定字符是否为数字或字母% ?1 R" \3 ?2 i
    2、int isalpha(int c);
    $ S% {7 M* Y+ r/ X; H9 z检查指定字符是否为字母
      S) g! ^+ b8 _( Q: X/ X0 V8 I3 @3、int iscntrl(int c);
    , l: ?- J% ~# D/ l, v4 m检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。5 }, a7 T- x  }# d0 `
    4、int isdigit(int c);
    $ f# e" z( A% r判断指定字符是否为数字
    : x( A. Z, U7 h( S' F0 A  p5、int isgraph(int c);* W" d* G: A! X0 w
    判断指定字符是否为除空格" "以外的所有打印字符。
    $ c7 Y/ H8 @: l' @6、int islower(int c);( I3 {% ?, ^/ O6 h/ u
    判断是否指定字符为小写字符2 M6 {( ~: d7 ]  X' j+ ]1 Y# U
    7、int isprint(int c);1 Z3 e. x* C7 P1 @) ^$ E
    判断是否指定字符是包括" "在内的所有可打印的字符) L+ k0 c- ]( c. x$ J
    8、int isspace(int c);
    9 x9 [- L& v2 z! U' `. |, r  U判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。9 ^+ X" z% x+ v- c4 ^
    9、isupper(int c);
    + Q# m5 B6 _  X8 C9 a& Q判断指定字符是否为大写字符。
      C; m! d, L; o9 w10、int isxdigit(int c);
    9 e5 j9 p2 t0 _+ ]8 }7 d* [) k5 o2 `可字定义区域设置,默认和isdigit一样。; N8 I( q3 P! }; Z% T- d
    11、int tolower(int c);% G2 _- y; F7 O1 l% c4 o
    将指定字符转换成小写字符。) I! x2 E+ m: a4 U- @$ ~0 p/ ?1 j6 m
    12、int toupper(int c);
    , g1 d. ~  D+ c5 M4 K8 b$ w! ^2 u将指定字符转换成大写字符。
    . N2 D6 g& m" l/ G& R) }三、errno.h
    : B3 S  z' E/ g8 L宏部分
    / Y9 j( R* M7 }% s四、float.h  w$ @3 O3 s, V) j* h; `
    宏部分,测试上下溢
    . h' i5 b# F- Q$ h0 }( ]" p五、limits.h
    8 f, B* n7 ?% {' Q/ g8 \宏部分
      l, P: V0 u# P: G! J$ u, ]/ b$ `9 E六、locale.h) x2 @' w" x+ ~3 C% V9 O
    两个函数、一种类型(struct lconv)、一些宏。
    9 q* Z4 n3 Y9 C7 S# R* D! U% J1、char *setlocale(int category,const char* locale);
    6 V( `( c0 n, u6 g2、struct lconv *localeconv(void);
    # n) ~7 V4 e* ?8 d1 a1 D8 q; c七、math.h+ [6 @7 G. q' q" U( v0 Q. _0 Y
    三角函数部分:
      `2 @) ]! V8 Y8 m6 V1 g6 a0 J1、double acos(double x);" w- f" D* p; i) L, _& w: I. \2 P
    计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。
    $ C0 h0 S0 K1 @7 ]8 p2、double asin(double x);
    / _, C& e1 \, `! _: F计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。: g& w+ N5 @8 A, t$ a
    3、double atan(double x);
    1 w. X5 d5 V$ K1 \0 P& z8 p计算x的三角反正切。返回值范围[-PI/2,PI/2]。  p* c, U: O9 p3 O/ q* J' x; \
    4、double atan2(double y,double x);- D: P% \$ [3 I# [1 ~
    计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
    & a2 ]7 T, |/ e" P8 ^5、double cos(double x);9 H; C, a. G: V* M
    计算x(以弧度为单位)的余弦值。
    ( g: Q4 c8 M! X: M/ f6、double sin(double x);1 m+ L6 _9 K" n% }
    计算x(以弧度为单位)的正弦值。+ a$ V% ?% v0 t. X! o
    7、double tan(double x);+ e! M- j. @. I8 s; B
    返回x(以弧度为单位)的正切值。+ y% n# h0 X& y* P* @# R
    8、double cosh(double x);8 j% Z! L& d9 Y  I' h
    返回x的双曲正弦,若x的值过大,则返回错误。0 m, O3 ?& ]0 n4 {1 |4 X! x4 P6 J1 D
    9、double sinh(double x);' Q, U! G6 |$ A4 |
    计算x的双曲正弦,如果x的数值太大,则返回错误。
    " i: C) S2 e; E& O10、double tanh(double x);
    9 W1 Q9 l2 ^* x" u0 J7 G# ~计算x的双曲正切。
    9 U4 F  |( @3 \9 s/ f( i9 [5 D! {! n% I11、double exp(double x);5 u2 L; F8 |" C  V8 Q, K
    计算x的指数函数。/ B! u! K5 ?" G5 H8 g  |
    12、double frexp(double value,int *exp);+ K4 ?$ N) F2 Q' I& a! u6 o1 w, B
    把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。5 g# v  t* [- N0 r* S7 ]% d
    13、double ldexp(double x,int exp);8 {- C9 r/ d+ s2 x: J/ }* A6 {
    计算x*2^exp的值并返回。3 L9 {( w/ s( Q, a8 @5 t
    14、double log(double x);2 F1 V) \% U1 j5 h
    计算x的自然对数,如果参数为负,则发生值域错误。
    ( P; D2 M7 d8 V, |, F15、double log10(double x);* U9 p* J) v7 n$ t) ~
    计算x的以10为底的对数。( M) y8 y% \" B2 D
    16、double modf(double value,double *iptr);
    ) S- W, K! c, O; i5 h7 |将value的整数部分传给iptr,将小数部分返回。! B3 m% R8 Y  i  e3 L
    幂函数部分:! C, o" V; V  A8 I1 r4 {
    1、double pow(double x,double y);
    % r# W7 Y8 L1 p* v) B函数计算x的y次幂,要防止值域错误。
    1 y1 e$ S8 d) t2、double sqrt(double x);
    ! i6 H3 v# [% }$ G5 D8 ?函数计算x的非负平方根,如果参数为负,则发生错误。  u3 `1 K0 c4 h2 j. Y' r
    取整、绝对值、求模部分:
    + m  e; t7 c& R+ S: k  v! I1、double ceil(double x);: u- F) h4 I; l* h. x" [
    返回不小于x的最小整数。变大取整。7 x: m" v. T5 s2 q$ u
    2、double fabs(double x);' Z* r" Q8 f) K; v" Q9 U5 c, j
    返回x的绝对值。  @: y* d# g  ^" R' b
    3、double floor(double x);) C2 N3 g1 W, D6 N, t! ~
    返回不大于x的最大整数。变小取整。
    ( @- E' F' k( g8 E; R! I4、double fmod(double x,double y);$ i2 Y4 ?8 I9 z, o
    返回x/y的余数。
    0 [  ^! d4 d4 b* C  ^; m5 `八、setjmp.h0 v2 \+ ^6 m2 V- u4 i; ]4 i: `
    定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);( `, ]6 Z0 s- i0 o
    用途饶过常规的函数调用和返回规则。
      c3 e& X8 z4 ]' R! Y+ P九、signal.h* ?  o# F9 \/ y4 J3 z
    同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。8 k3 h9 D/ B; H& v  u
    定义了一个类型sig_atomic_t,定义了两个函数和一些宏:9 I0 y% V3 e3 }9 O2 c! ?) l
    void (*signal(int sig,void (*func) (int) )(int);4 R/ ^6 X/ t9 N* w: `. u9 W
    通过设置三种方式对信号进行处理。1 t. o& b& R& r  a6 N  \3 `6 y
    int raise(int sig);
    ; o9 F& c  b/ Q* k3 q) K/ H把信号sig发送给正在执行的程序。成功返回0,否则非0。$ R) E% U# }6 A
    十、stdarg.h" x9 |. L& ?- t
    可变参数列表。定义了一个类型va_list。2 h- `6 }8 x. Y" `
    宏:
    " N2 H; z7 l1 m( F1、void va_start(va_list ap,paramN);
    ' p$ a  M9 e5 K+ t( G+ F/ K0 }对ap进行初始化。
    % c4 R* k; ^/ N, Y' H# p2、type va_arg(va_list ap,type);
    . C2 \( n- P! w7 F7 Z* f" g7 y& S' u3、void va_end(va_list ap);
    ( R9 E3 F2 H8 Z& L' Q2 h十一、stddef.h 被放到了stdlib.h
    - R* m& x  B9 g5 f% b* l定义了一些类型:+ r) E1 ^( X/ u! Y' R1 j
    ptrdiff_t 两个指针相减的有符号整数类型$ D6 }& T: \4 _6 Y1 n) H: f
    size_t 用sizeof操作符的结果的无符号整数类型8 C7 _1 W3 ]  u. s: }6 Y
    wchar_t 整值类型& C+ M4 D5 s5 g, ~$ H; ?
    宏:
    1 \) m% B) E* E1 aNULL 展开为实现定义的空指针常量。6 Z' Y* @* ]  M& y0 Z
    offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。# Y' N' s3 q) @7 X2 q  h
    待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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
    $ ?. ~! g1 h( W: I
    5 G; o* u8 b- i5 D/ y/ O4 Y" N; 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-10 03:43

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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