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

 找回密码
 立即加入
搜索
查看: 2077|回复: 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语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。
    . q; |- ?. B# h( ^' D( B3 N' I第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。
    ( ?1 W/ i+ ^, Q2 |以下为头文件概述(上), }$ y3 c. K6 o. W* `# W
    一、assert.h5 |. D# m, F. V
    1、void assert(int expression);
    ' O. {% K0 {; D) @2 P没有返回值,如果表达式为假则调用中断。
    3 }, E$ l" @6 M9 C二、ctype.h
    2 w6 B- [1 c. ]7 J! G/ h1、int isalnum(int c);) u+ E1 @! Z8 G4 I) ]4 p5 m
    检查指定字符是否为数字或字母8 k. ]8 K# C( t7 v: V
    2、int isalpha(int c);0 p) A* t' d) n4 c4 \: V
    检查指定字符是否为字母* E4 {9 ?$ e4 s: g9 T+ Y1 |
    3、int iscntrl(int c);0 u  r) j1 X+ s( F
    检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。7 ~. \+ A5 ?. ~' s. m4 v8 d
    4、int isdigit(int c);
    ( ~; V5 p. X6 L- C. k判断指定字符是否为数字
    : a! o! s' `$ V0 S1 B; R5 ~* ^, T5、int isgraph(int c);# M! p9 O; @4 _7 ?7 {
    判断指定字符是否为除空格" "以外的所有打印字符。
    7 i9 R+ @! p" _6、int islower(int c);
    4 {( ^8 k# y2 h判断是否指定字符为小写字符; C! V# n. c. s# R
    7、int isprint(int c);
    . R* N( }5 W+ q# G判断是否指定字符是包括" "在内的所有可打印的字符
    * r8 W+ U  N& b: A) v! t8、int isspace(int c);
    7 H; Q0 w7 S. W: H$ ~6 h2 i3 a5 Q判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
    . G  P5 X! `1 y4 [9、isupper(int c);; B3 L3 p* u6 e" ^, [
    判断指定字符是否为大写字符。  R# H- l  `7 f* T( v
    10、int isxdigit(int c);
    ; a' K3 `$ w! L; A可字定义区域设置,默认和isdigit一样。2 [3 t& b6 {1 h- G4 o) K, @2 o
    11、int tolower(int c);
    ; ]$ p* ]. {+ ]: a- ]4 t6 |8 y8 R( p将指定字符转换成小写字符。
    * ^3 o9 Q' L! S# I- U8 ^12、int toupper(int c);
      }8 ]3 K9 ]) j4 f# O/ t将指定字符转换成大写字符。
    . Y2 g& I1 P) q6 g% N6 o2 }1 T0 o. ~; e三、errno.h
    * a- Q1 _6 Y/ f7 n& s. {宏部分/ p# n/ c4 e- K9 q/ C/ u8 \$ C. v
    四、float.h- h9 x+ n( `$ Y0 h/ R5 S$ H
    宏部分,测试上下溢( n8 c. f0 n$ V, q' ~
    五、limits.h
    . Z* k' D3 B: G) @; a6 D1 F1 W宏部分+ X. s* m! C5 s8 a) ^, ]
    六、locale.h
    1 y$ `4 k3 f! [, A6 ^两个函数、一种类型(struct lconv)、一些宏。9 n4 A4 W* c7 M8 ^
    1、char *setlocale(int category,const char* locale);% a/ L; C2 O- V& \6 S
    2、struct lconv *localeconv(void);
    - C4 s1 O- J: b* M$ |2 K2 H七、math.h' Q) Y5 F9 n6 X; n( W
    三角函数部分:
    3 }7 ]( j9 h+ P: ~& ^: r$ o1、double acos(double x);
    + U4 `, ~/ H/ j) w! {: E计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。8 g) e, j( U3 C1 i
    2、double asin(double x);& d) _1 p! R, _
    计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。
    5 N% r6 n: j' z1 K9 B3、double atan(double x);+ T( `7 I* H( S/ Y1 j9 F5 {
    计算x的三角反正切。返回值范围[-PI/2,PI/2]。$ y3 f' {! z, Y; u8 d+ u1 p4 [
    4、double atan2(double y,double x);8 U) Z7 b4 ^1 k% |' R& ~
    计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。+ x( ]* V/ _6 n" q2 ?9 L9 m
    5、double cos(double x);, c/ }1 z4 d5 E
    计算x(以弧度为单位)的余弦值。
    " w" }+ F$ u/ P3 E) L, o6、double sin(double x);
    1 P7 c; I# v" R; h, H计算x(以弧度为单位)的正弦值。% i/ H6 f- z& @# {
    7、double tan(double x);4 p) |* j) Q' j. j; j+ |' Y
    返回x(以弧度为单位)的正切值。
    % |' L3 w0 F8 C7 c5 i! y8、double cosh(double x);
    8 E- @7 ^/ H! H* l返回x的双曲正弦,若x的值过大,则返回错误。$ j$ N. e: v& B" X; Q( ?
    9、double sinh(double x);3 W3 ?8 E6 A; u1 ?% P! A& g$ o4 x& v$ r: }
    计算x的双曲正弦,如果x的数值太大,则返回错误。
    : W7 i0 s, K! F8 B10、double tanh(double x);% Y$ {" L5 I. d/ `! t' l+ j' D
    计算x的双曲正切。
    0 s# \9 H; B6 R; H11、double exp(double x);
    4 W6 B1 J) C; f计算x的指数函数。# O: U7 |: e) s/ V% I) w
    12、double frexp(double value,int *exp);
    * y0 Q0 x+ ^- B7 S3 \* c把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。
    % T; `' P7 g6 c: R13、double ldexp(double x,int exp);: E  _4 k) ?0 F7 J% U4 F) g
    计算x*2^exp的值并返回。* `* b, O" }% v( ?1 d) Q
    14、double log(double x);( r: Z* z, ~/ g6 o$ m
    计算x的自然对数,如果参数为负,则发生值域错误。
    . T' j& y$ @* i9 M* i$ d15、double log10(double x);% c/ c2 }& {/ \" S. Y* W" y
    计算x的以10为底的对数。" M; K  A) ]; m9 H6 m
    16、double modf(double value,double *iptr);7 x9 {- m. K, D! C% h% s! C9 Q& G
    将value的整数部分传给iptr,将小数部分返回。  @2 r, {% S5 s0 }  k* ?. u
    幂函数部分:: H8 ^# O# g# X8 O3 H4 d' o: c
    1、double pow(double x,double y);/ C& X" o* `/ {* `$ e1 E0 V" f
    函数计算x的y次幂,要防止值域错误。
    7 I1 G) X1 U4 u! Q6 _) _2、double sqrt(double x);% J. `: G& |! k' k# K! n0 f
    函数计算x的非负平方根,如果参数为负,则发生错误。6 u  Q/ d, G8 y0 o+ l) q
    取整、绝对值、求模部分:
    # c$ a& V' J7 R$ w- Y0 }9 i7 m1、double ceil(double x);
    + |# m$ R" |6 ]' O; ]( M返回不小于x的最小整数。变大取整。6 Z! g) E9 s& O/ K- s1 u7 C
    2、double fabs(double x);6 L" w( B) x9 w3 G  X
    返回x的绝对值。/ h8 x3 @- J: y8 `9 X" p: C
    3、double floor(double x);
    ( B0 k0 `* {3 H: |$ `返回不大于x的最大整数。变小取整。$ s  u$ l. n' F3 _# {: b
    4、double fmod(double x,double y);; J; Q# g3 r; k3 L
    返回x/y的余数。
    3 X" b8 \" ^/ n% H. M# w0 l* [八、setjmp.h
    ! `& X: t5 E1 |定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
    ( g1 u/ U: b4 X" i用途饶过常规的函数调用和返回规则。
    ! e7 U, w( n+ ?4 I7 p4 i九、signal.h  o* }. Y( W( ^1 b' Y/ n
    同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。  |5 G- k+ r2 l: q" l3 J1 S
    定义了一个类型sig_atomic_t,定义了两个函数和一些宏:$ L, H9 ~4 Z' m3 `9 I
    void (*signal(int sig,void (*func) (int) )(int);
    2 f- Q  G# \+ q+ g通过设置三种方式对信号进行处理。4 }$ w+ Q3 Q& a. N0 Q! {( v* p
    int raise(int sig);1 }* d% r4 k* y+ g# P8 @$ @/ H! d+ b
    把信号sig发送给正在执行的程序。成功返回0,否则非0。
    1 \8 ]% u9 c7 }! q- X十、stdarg.h
    ) `  A* U! i2 a% {; N" y, y5 w8 B; ]可变参数列表。定义了一个类型va_list。* C1 D0 ~  o0 t% X/ F
    宏:' Z) E5 I" _% ?' H9 A8 S  A" \; Q: y
    1、void va_start(va_list ap,paramN);
    1 K5 F( F, E* x- P* }) G7 {8 R对ap进行初始化。
    6 T1 ^* I  {9 V" a. D% e% a2、type va_arg(va_list ap,type);9 g5 R0 t, R/ j9 t4 C9 i( e! d5 C
    3、void va_end(va_list ap);
    : x* y' q9 k6 J- s8 C; p% S4 l十一、stddef.h 被放到了stdlib.h
    $ B' q5 p" Y7 H2 U' {( z/ A4 O定义了一些类型:
    6 W; d7 N3 x" T, q# Rptrdiff_t 两个指针相减的有符号整数类型
    2 b# x0 d6 M0 n! \size_t 用sizeof操作符的结果的无符号整数类型
    : Y7 {, F7 P0 P* X8 M& Jwchar_t 整值类型
    $ n* ~% g1 u( S% c4 [5 Q宏:
    - F. U* {+ Y2 b- I; ~9 g6 M. mNULL 展开为实现定义的空指针常量。4 m$ @/ E1 |! x5 _
    offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。
    8 @! U5 U* w* d' g. B# f待续……
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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
    $ K+ {/ N" v6 {: ~: `6 E# I* ~$ P. L5 H9 c, p) k7 m

    ; Z# _+ E2 d( J* P8 R$ R    常用的都写了呀!需要时间的,慢慢整理 呵呵!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 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 01:27

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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