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

 找回密码
 立即加入
搜索
查看: 1856|回复: 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语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。. r! _0 P/ R8 _9 _( x  _3 L; R
    第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。
    * K% z5 h2 B* k0 m9 I以下为头文件概述(上)/ h- }* t, P7 ~. I' p8 E1 Z
    一、assert.h
      J3 ^( v. [* N+ R" Z1、void assert(int expression);2 e8 Q* q0 O9 Z" B. n
    没有返回值,如果表达式为假则调用中断。7 M7 m( h/ ~. j4 G9 M. X
    二、ctype.h4 \) I+ O' f3 m6 @
    1、int isalnum(int c);6 S" b; ~! S9 z/ A5 H$ O
    检查指定字符是否为数字或字母
    & i; A- i8 |( F! B  L% U2、int isalpha(int c);
    4 G- `2 ^3 p" I# V( R8 t检查指定字符是否为字母$ I7 L* g& C" `& g4 e, k
    3、int iscntrl(int c);
    ; c" D' ]4 i" T检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。
    ' y$ |, [& X! u6 D" ?4、int isdigit(int c);* b+ h0 P$ b. s3 p0 M; v# [
    判断指定字符是否为数字8 K# r! c; S& Z6 n
    5、int isgraph(int c);
    . Q  \$ l, c+ e判断指定字符是否为除空格" "以外的所有打印字符。
    - t4 m' m2 h) u8 N2 n6、int islower(int c);
    ' w% U- p7 s# W( V/ u判断是否指定字符为小写字符
    : F2 i  U1 N/ F# V4 O7、int isprint(int c);
    + R9 {7 q' a/ |) B判断是否指定字符是包括" "在内的所有可打印的字符; |% `& s# G( n" O
    8、int isspace(int c);' m. [3 g5 n7 J6 U( o2 F
    判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
    ! ^  L( J/ f; v" Q! U9、isupper(int c);/ N) ~! g+ h- H! k, N: v
    判断指定字符是否为大写字符。
    9 t/ L% l; B. d" q, k4 N3 R' c10、int isxdigit(int c);: R; X) K. G5 H2 m# W5 }
    可字定义区域设置,默认和isdigit一样。5 I& Z9 ~$ q- p8 C+ Y' [
    11、int tolower(int c);
    0 c5 ?5 p/ y. L. P将指定字符转换成小写字符。
    # c1 g! e8 o1 Q, i, u7 O12、int toupper(int c);& g' W/ l0 h* |
    将指定字符转换成大写字符。
    ; ^+ |7 F3 p/ G三、errno.h! _5 z; o, w$ E; h2 B  u8 I0 W
    宏部分
    ; x6 a/ ^1 q+ H& L4 R2 C( z/ ^2 E四、float.h/ l0 n) _5 Q4 C2 N, K4 H
    宏部分,测试上下溢* x9 `+ u" O2 G0 C5 l% S8 K
    五、limits.h$ r; J8 W4 s+ b5 B# @+ r
    宏部分
    % D4 O, p' R3 e. d8 V! _六、locale.h) Q) s* N+ q( Z
    两个函数、一种类型(struct lconv)、一些宏。+ O1 p) Q. \) e' o$ D6 f. u
    1、char *setlocale(int category,const char* locale);
    2 t' N. N- U* w4 X* I2、struct lconv *localeconv(void);( d3 G% Y# q& t% I# g& V3 H% a& p* Y
    七、math.h1 C9 a+ c3 h6 d( }" Z& K# K" B, |
    三角函数部分:
    4 a$ x! ]+ G/ a; Y1、double acos(double x);
    % B/ k' k1 O# P2 L计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。8 A% x. T' R  y5 N' P! i) U  T
    2、double asin(double x);, d" s; k& N5 s: U$ b; O
    计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。8 b! r/ N$ p' u# L/ Z2 D# b4 X
    3、double atan(double x);! D9 T4 d. m* v% L6 w
    计算x的三角反正切。返回值范围[-PI/2,PI/2]。8 S8 t( r" P7 L6 g
    4、double atan2(double y,double x);, [& v2 {/ ^7 c; G
    计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。9 c. C% ]$ ], L! l+ f5 J8 L
    5、double cos(double x);
    ( [- A3 M' G9 q& ?% o计算x(以弧度为单位)的余弦值。4 N+ \& q6 o9 h
    6、double sin(double x);
    % |: }7 H7 E! `8 ]3 O. _计算x(以弧度为单位)的正弦值。
    0 E: C! Y  \$ \& ]/ K, g+ e% {7、double tan(double x);
    / E/ Y# S$ u  s& p0 D8 M+ M2 `返回x(以弧度为单位)的正切值。9 ~2 `' ~5 C) e3 o  s
    8、double cosh(double x);& Y5 v* B- R! K& H9 {1 t
    返回x的双曲正弦,若x的值过大,则返回错误。' J" \# W; G) f# ]
    9、double sinh(double x);
    - w; N+ f2 {' v3 i1 ]  Q计算x的双曲正弦,如果x的数值太大,则返回错误。
    $ J4 n; r7 z* ]7 t& m10、double tanh(double x);  l& b2 W- G% ^! e1 l
    计算x的双曲正切。8 ]" D/ B! f3 ], s0 g
    11、double exp(double x);/ d! Q& i# o8 N/ J# k
    计算x的指数函数。
    ! T) W# U. N$ M2 x( }2 f5 |! y. d5 s12、double frexp(double value,int *exp);
    ! M' e$ O. G+ S1 r" ^: m! \把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。" C0 B% J. u( a0 r  T# t: m
    13、double ldexp(double x,int exp);, q& n: f7 m, M
    计算x*2^exp的值并返回。6 o  u6 b2 E  O
    14、double log(double x);+ x' q: _* _* K8 r( N$ v
    计算x的自然对数,如果参数为负,则发生值域错误。
    , k1 L3 ?4 A7 h: W/ y9 R( ]15、double log10(double x);
    0 i- c, c% a$ s8 [: ?& X计算x的以10为底的对数。6 M9 [/ }% u" k1 _" r
    16、double modf(double value,double *iptr);
    * I6 P+ L0 S. L' j) a& u$ ~; S将value的整数部分传给iptr,将小数部分返回。
    6 x" D  h, z- @' f# G- H5 \幂函数部分:9 J1 w' P) M5 N! `
    1、double pow(double x,double y);- [( s( s) @7 k
    函数计算x的y次幂,要防止值域错误。+ X. @# e2 x( ^8 T1 X2 f
    2、double sqrt(double x);% J6 k( b1 C) @
    函数计算x的非负平方根,如果参数为负,则发生错误。
    6 S9 i+ m# `* W7 i6 {7 o' N7 h取整、绝对值、求模部分:
    , p; U5 E6 O+ D: W/ \, R. q' ~' W1、double ceil(double x);
    2 M1 M) T! `. G" `返回不小于x的最小整数。变大取整。
    8 }  a) W- q6 D5 p3 V6 f2、double fabs(double x);
    1 Q$ y2 G' P+ q! x* D# ]- o/ B' p返回x的绝对值。4 n1 o; T4 W8 T) R+ B& {
    3、double floor(double x);, z+ U+ F1 X; c7 V
    返回不大于x的最大整数。变小取整。& k+ A) v, H& T1 o  C- O9 e; Q
    4、double fmod(double x,double y);
    * i' G0 L( I& X- c+ h- A% t( a& t返回x/y的余数。3 b( Z: q$ f' ~; z
    八、setjmp.h
    9 c1 T  f3 _8 ^' F" i9 S9 L定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
    ( L! B& r$ x) G% x6 q用途饶过常规的函数调用和返回规则。. x9 _( c; w0 ?% ?% |
    九、signal.h4 C& f+ q) H6 v: t9 h0 S: X$ W
    同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。( i2 K# l! x/ `. M' a: \
    定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
    ( F4 [( e4 V/ z* g$ ~void (*signal(int sig,void (*func) (int) )(int);
    4 z) I) S/ \- ^1 [$ h通过设置三种方式对信号进行处理。+ R) d$ Z4 j& W2 }5 w4 S3 Z
    int raise(int sig);
    . ?8 Q  u; g/ H) t6 E把信号sig发送给正在执行的程序。成功返回0,否则非0。! Z% S. [0 i! Z2 g1 P$ g% ~1 K" L# m
    十、stdarg.h
    * I% p6 q' l: |+ J( u5 U8 c可变参数列表。定义了一个类型va_list。4 T5 h8 ]+ A  f- H! N
    宏:
    ( x; B( S( I1 o/ h* m% p8 p1、void va_start(va_list ap,paramN);
    ( i. K+ o. l, o, d6 Z4 t! e对ap进行初始化。
    ; L2 v& E0 T1 R7 u0 W6 q; t: G2、type va_arg(va_list ap,type);
    5 L1 u4 y9 R* D1 q) Y+ C  [3、void va_end(va_list ap);9 W4 _" z! d: T  H; G- n
    十一、stddef.h 被放到了stdlib.h6 S- D% a$ _/ F8 s
    定义了一些类型:
    7 |1 s1 f3 k% Kptrdiff_t 两个指针相减的有符号整数类型
    # X( F  r( [( c  j2 xsize_t 用sizeof操作符的结果的无符号整数类型
    % Z5 H/ f8 W5 x& |wchar_t 整值类型
    % ?: y5 a, U( l" }宏:. R  s) s% Z  Z
    NULL 展开为实现定义的空指针常量。
    0 J: V5 O* i8 [: J1 D) Yoffsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。
    ) m! R; \- ]! i" [! r: V. D待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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 7 g& ~& r, X, L

    ; h7 H5 k' i$ ~7 c% H0 i$ ]! {3 L4 N. A/ S" r
        常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

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

    连续签到: 1 天

    [LV.7]常住居民III

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2025-4-20 11:23

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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