C语言标准库19.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 几个有关函数 标准库还提供了另外一些与IO有关的函数。 1)缓冲区冲刷函数fflush。原型:     int fflush(FILE *stream) 对输出流有定义。要求立即将缓冲区数据写入文件。本操作对输入流的作用在标准里没有定义。正常完成返回0,出错返回EOF。 2)文件结束判断函数feof。其原型是:     int feof(FILE *stream) 判断是否到达文件末尾。主要用于二进制文件,遇到文件结束时返回非0值。 3)文件定位及定位函数 文件可看作字节的序列,每个字节在序列中有一位置。可认为IO时有一个文件位置指示器。 以读/写方式打开时指示器设在文件开头,以附加方式打开指示器设在文件尾。指示器随读写操作自动后移,指向下次操作位置。 为方便,标准库提供了直接操作文件指示器的函数:文件定位函数/指示器移动函数。最常用的三个: void rewind(FILE *st) 将流st的文件指示器重设到文件开始位置。 long ftell(FILE *st) 返回流st当时指示器位置。出错返回-1L。 int fseek(FILE *st, long offset, int origin) 设置流st的指示器,使随后IO操作在新位置进行。origin指定定位基准点,可能取值: SEEK_SET 以文件头作为定位的基准点 SEEK_CUR 以指示器的当前位置作为基准点 SEEK_END 以文件尾作为基准点 正文流的移动操作有限制。对二进制流没限制,移动目标是以origin为基准点偏移offset的位置。 出错处理 输出出错信息是希望显示到屏幕供人读。通过stdout不合适:输出定向到文件也使出错信息送到文件。 送到标准错误流stderr的信息不受定向影响。改造前面程序cat,只需要改动一个语句: fprintf(stderr,%s, cant open in file: %s\n, name, *argv); 文件错误检查:int ferror(FILE *stream) IO出错时设置相关流的出错标志变量。ferror检查流的出错标志。当stream的状态变量设置时返回非0。 错误标志复位(清除)函数 void clearerr(FILE *stream) 标准库错误处理: 为检查程序执行中出错,库提供了一些机制。 每个C系统定义了一组错误编号,0表示无错,其余值表示各种错误。 一些函数出错时自动给状态变量errno设错误编号,还定义了相应的信息串。见errno.h。 打印当时错误信息: void perror(char *s) 检查当时错误编号(perror调用之前的最近错误),把对应信息串送到stderr。输出形式: 字符串s 冒号 错误信息串 换行 9.5 标准库介绍 标准库由一组库代码文件和一组头文件组成。 代码文件内是标准函数的程序代码及相关数据(变量)。若程序调用标准函数,连接程序将从库代码文件提取函数代码,将其拼接到结果程序里,并完成调用连接。库代码文件里还附带了一些连接程序使用的信息。 ANSI C的标准头文件是一组正文文件,提供库函数的使用信息。其中列出库函数原型,所用类型(如FILE)、符号常量(如EOF、NULL)和其他宏定义等。 在C程序里用标准库函数,只需包含有关的头文件,这将保证程序对标准库函数的使用与其实际定义间的一致性。 库代码文件通常很大,具体程序实际使用的库功能通常只是其中很少一部分。 人们开发了这样的技术,在程序连接时不是把库代码文件整个装配到可执行文件里,而是根据实际需要,由库文件里提取出必要部分装配进程序里,以保证用户程序的紧凑性。 9.5.1 几个已经介绍过的头文件 math.h ctype.h 字符串函数(string.h): char* strchr(cs, c); char* strrchr(cs, c); 查寻字符c在字符串cs里出现的位置(第一个,或者最后一个)。 cs表示const char*(const字符串),s表示char*(字符数组),用c表示字符。 char* strpbrk(cs1, cs2); 查寻cs2中的字符在cs1里第一次出现的位置。 char* strstr(cs1, cs2); 查寻cs2(子串)在cs1中出现的位置。成功时返回所确定位置的指针,失败返回空指针。 size_t strspn(cs1, cs2); cs1的所有字符都属于cs2的前缀的长度; size_t strcspn(cs1, cs2); cs1的所有字符都不属于cs2的前缀的长度。 “前缀”:字符串开始的一段。 char* strtok(s,ct); 是个比较复杂的函数。其基本功能是用于在字符数组s中标识出

您可能关注的文档

文档评论(0)

书房 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档