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

 找回密码
 立即加入
搜索
查看: 1855|回复: 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语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。
    . S7 a3 O& n9 Z* r; U+ R9 f; d第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。% c8 W7 S9 U, Y' \5 Z* i
    以下为头文件概述(上), c) g/ E% V/ N% w% N, @- c
    一、assert.h4 w# Q2 U. o8 A2 R/ |
    1、void assert(int expression);
    0 `5 X" b4 Y  x没有返回值,如果表达式为假则调用中断。: `6 B. D4 f3 l; t! h* x3 e
    二、ctype.h" a" i3 @4 }0 h$ N- y+ M5 {
    1、int isalnum(int c);
    * h: t8 @+ ?. U" r+ L* C$ P检查指定字符是否为数字或字母% s$ i2 D9 T# V1 S8 G; ]  W! g
    2、int isalpha(int c);  g4 [2 a1 p) ~2 [6 y' }
    检查指定字符是否为字母
    8 c' D5 l5 {& j7 j. E5 p3、int iscntrl(int c);- Q, \7 x2 p# }
    检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。
    8 I) `  t: {" ?0 y* F0 y4 _4、int isdigit(int c);% k3 n/ `4 [2 m) |$ x* a, g' q, M
    判断指定字符是否为数字+ J2 ?- j: W, X9 C( P
    5、int isgraph(int c);
    . B- {; u3 g8 Q9 F判断指定字符是否为除空格" "以外的所有打印字符。4 ?( ~; R1 @& F  |
    6、int islower(int c);1 r4 r7 y$ @( y- b3 R5 Q
    判断是否指定字符为小写字符
    ) z: }9 I* ]  w5 O! b2 @7、int isprint(int c);1 w/ m3 m! n( H# U  h2 Q9 H6 X
    判断是否指定字符是包括" "在内的所有可打印的字符
    ! L3 x. D# {4 Z8 w) T& D- G8、int isspace(int c);' V$ a' _5 j# q. ]  J  c; x
    判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。/ v( U7 X* }' i5 ?
    9、isupper(int c);
    $ j+ A2 t7 F! x. L( q1 l" }* o# i$ X判断指定字符是否为大写字符。
    ! e/ q" z( s' t0 j: Z10、int isxdigit(int c);" Z/ V* j/ J  V9 i8 m6 w6 Z
    可字定义区域设置,默认和isdigit一样。
    3 _! y* ?, ~, H5 N11、int tolower(int c);
    ; F" q( H1 ^( c- g将指定字符转换成小写字符。+ _7 O0 Q+ T9 A% O* a3 x6 S
    12、int toupper(int c);
    ' i5 }) p( X, C$ G- M8 U) Q3 Y; w( R将指定字符转换成大写字符。
      Y% {) Q9 Z6 f5 [! J+ W2 S三、errno.h5 q+ R% t5 [; o% n  f3 a
    宏部分
    8 B6 Q9 J' r& M2 b* g% v7 L& E% Q四、float.h+ `1 @1 u- `4 O! ?' f" u
    宏部分,测试上下溢! D" i+ H! ?8 P1 `) x0 l
    五、limits.h
    1 @4 s6 o! w* |6 o宏部分
    % u# @0 D1 y( M( \" P六、locale.h! O- L! J( K+ g
    两个函数、一种类型(struct lconv)、一些宏。7 y) z7 G3 a  M/ R% |" @
    1、char *setlocale(int category,const char* locale);0 z- y: ~' m$ W3 h
    2、struct lconv *localeconv(void);8 E& A# c% u5 I8 O' I, a
    七、math.h
    9 _( {; L% Q- G. j2 X* Q6 |三角函数部分:
    * c( d  \' x0 [* R# s$ U1、double acos(double x);
    ; M6 c3 p6 v+ p% C3 O- L计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。
    + G) [( M& n  B# I0 Z7 z2、double asin(double x);5 R1 d3 f0 C, `% \  c( O
    计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。5 R! `, I: Q  u& D! v9 W, X' K: T
    3、double atan(double x);
    . S! ~8 m' G1 \; X" ?7 W4 B) @计算x的三角反正切。返回值范围[-PI/2,PI/2]。5 z' g$ F; V) J- K# u
    4、double atan2(double y,double x);; b* J3 a9 U/ C, N
    计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。% ]! o& r6 U* e, Y4 G5 m
    5、double cos(double x);
    ; L1 H+ m: [  ]8 m! P计算x(以弧度为单位)的余弦值。3 L8 B& r- Y! i* _7 {! Q# n
    6、double sin(double x);
    " ~' H0 Q7 [- M4 a% s& r4 ^计算x(以弧度为单位)的正弦值。
    ' _& I, }! ?  k3 W7、double tan(double x);( ^1 P+ F, Q% e* p2 w5 [7 ?3 w- B
    返回x(以弧度为单位)的正切值。
    " i. a: C4 J" I* [4 g8、double cosh(double x);
    ' Y' j6 y( p/ x7 d, u  P返回x的双曲正弦,若x的值过大,则返回错误。
    $ R6 X: [; `! U; `; |( \9、double sinh(double x);+ [$ C# j; p1 A+ c$ w4 d( [6 H
    计算x的双曲正弦,如果x的数值太大,则返回错误。3 i4 ~& @8 J7 W5 [3 N+ [( A' t1 X
    10、double tanh(double x);
    * f& R+ T/ F9 k0 x( p2 ?  C计算x的双曲正切。
    4 U( o9 i, e8 a11、double exp(double x);
    . L2 d8 I/ \5 g/ P. u8 ]计算x的指数函数。
    7 ?2 m9 j6 Z+ o( ~+ s12、double frexp(double value,int *exp);
    , z: N( p$ A, R, ]+ V; Z把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。" f- d1 U/ k$ o1 T  x0 E5 g
    13、double ldexp(double x,int exp);; ]5 h' G  I: y& ]
    计算x*2^exp的值并返回。
    9 ?/ V" m" L! N5 |+ P14、double log(double x);* ?4 M8 g4 C- l- j& g* O. n. G# A
    计算x的自然对数,如果参数为负,则发生值域错误。
    ; y/ S! z2 L% R) m6 ]+ _/ @15、double log10(double x);
    , k$ z# i9 p2 O5 [& C3 v1 m  V  O计算x的以10为底的对数。
    9 K$ \+ c& }* }: V16、double modf(double value,double *iptr);
    ; U; v# a3 y. R6 k' ?将value的整数部分传给iptr,将小数部分返回。5 \4 T# d) p3 I. F  I- `
    幂函数部分:
    ) r9 ^$ k) ^; c' \1 u! \7 v1、double pow(double x,double y);
    " D1 j) L; ^3 g7 V, x$ _6 f) W$ @2 g! o函数计算x的y次幂,要防止值域错误。) s$ _7 b8 \- t# J5 Z' T% s9 S
    2、double sqrt(double x);
    3 [% @+ Z, y) i) Q+ a/ a" n# W' Y函数计算x的非负平方根,如果参数为负,则发生错误。1 e/ _2 c! |2 \$ h4 Z1 f/ o
    取整、绝对值、求模部分:
    1 Z: t2 x0 t6 v8 W1、double ceil(double x);' y2 m& i4 b; ~+ n
    返回不小于x的最小整数。变大取整。4 C3 V- Q: o  u# P9 ^9 t  t  T* k9 h
    2、double fabs(double x);9 r0 P4 R6 J: i8 y' G9 Q
    返回x的绝对值。
    ) D2 t9 |+ A/ z7 ^1 {6 c: X3、double floor(double x);* ^' I1 u  _* o5 q7 L$ W& k
    返回不大于x的最大整数。变小取整。
    2 V( X6 u; ~3 p( L4、double fmod(double x,double y);
    1 ?: q2 Y' q7 E: H! N返回x/y的余数。
    ! O& V: o7 f: U8 d0 r八、setjmp.h
    - V4 p- z: `* @! L& j. L$ z8 |定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
    , v# O4 @# _6 o& h% Q. G6 \, ^" W用途饶过常规的函数调用和返回规则。' h* n6 _+ n* l& L+ a  ~' t1 `2 D
    九、signal.h7 a4 ?% I& v" B$ l2 g! x, |
    同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。& Z7 m" C9 b# _  \0 _/ @
    定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
    $ y9 g" {' r8 J* V! bvoid (*signal(int sig,void (*func) (int) )(int);
    ! n( j7 O" J5 f1 Q通过设置三种方式对信号进行处理。
    2 }+ D% F+ ?+ J6 B& X0 m, g1 Cint raise(int sig);
    2 v( d* e' I7 v  Z  ?把信号sig发送给正在执行的程序。成功返回0,否则非0。
    & F" z) J0 ]/ j( ^6 f/ Z# |十、stdarg.h
    ' G, |/ r9 G4 u' ]1 C) J可变参数列表。定义了一个类型va_list。
    3 x$ C; V8 j6 F7 a. q& M宏:
    4 m6 F) D& {' G4 g* A9 H; \2 {1 y$ Y) ?1、void va_start(va_list ap,paramN);
    $ e. }. {9 z. U  Q对ap进行初始化。
    + {  |1 [' C; }# q( A2、type va_arg(va_list ap,type);5 b2 |3 ~* |1 j# F1 V8 s  E4 x
    3、void va_end(va_list ap);
    * Y$ K; v/ u' O, _十一、stddef.h 被放到了stdlib.h4 ]) P9 N( ^5 {- E3 x
    定义了一些类型:5 L( D- ~' V6 W" ?# {7 i* u+ \: D
    ptrdiff_t 两个指针相减的有符号整数类型
    & z, o; C" i* Bsize_t 用sizeof操作符的结果的无符号整数类型
    " P. T" G9 O1 @5 w) l6 G- ]% K7 R) {wchar_t 整值类型
    % [. D! ?' ~) K4 q4 `宏:8 b2 Q- Y  C2 n' w3 _, _
    NULL 展开为实现定义的空指针常量。% d  D% c- u2 c& W2 N
    offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。8 s9 k: s* K1 I  v1 L
    待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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
    2 F0 ~" I! q/ i9 g2 S0 r3 |
    ; n! d3 V& Z" G$ N5 I" V
    : e) ]- W) `$ J1 }8 h7 q5 u8 G    常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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 08:40

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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