C语言中的标准IO.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中的标准IO

标准I/O 标准I/O是在系统调用基础上实现的; 所有C语言均有标准I/O,但可能在实现上各有不同; 标准I/O并不可靠,使用时要小心。 流和文件对象 在系统调用(低级I/O)时当打开一个文件时,即返回一个整数文件描述符,然后该文件描述符就用于后续的I / O操作。 对于标准I / O库,它们的操作则是围绕流(stream)进行的。当用标准I / O库打开或创建一个文件时,标准I / O函数fopen返回一个指向FILE对象的指针。该对象通常是一个结构,它包含了I / O库为管理该流所需要的所有信息:用于实际I / O的文件描述符,指向流缓存的指针,缓存的长度,当前在缓存中的字符数,出错标志等等。应用程序没有必要检验FILE对象。 象系统调用一样,为了引用一个流,需将FILE指针作为参数传递给每个标准I / O函数。 标准I / O流与系统V的STREAMS I/O系统不同。 标准输入、标准输出和标准出错 对一个进程预定义了三个流,它们自动地可为进程使用:标准输入、标准输出和标准出错。 文件描述符STDIN_FILENO,STDOUT_FILENO和STDERR_FILENO分别表示它们。 这三个标准I/O流通过预定义文件指针stdin, stdout和stderr加以引用。 这三个文件指针同样定义在头文件stdio.h中。 流的打开: fopen() 功能:打开流; 方式:下列三个函数用于打开一个标准I / O流。 #include stdio.h FILE *fopen(const char *pathname, const char *type) ; FILE *freopen(const char *path name, const char *type, FILE *fp) ; FILE *fdopen(int filedes, const char *type) ; 返回值: 若成功则为文件指针,若出错则为NULL。 三个函数的区别 (1) fopen打开路径名由pathname 指示的一个文件。 (2) freopen在一个特定的流上(由f p指示)打开一个指定的文件(其路径名由pathname 指示),如若该流已经打开,则先关闭该流。此函数一般用于将一个指定的文件打开为一个预定义的流:标准输入、标准输出或标准出错。 (3) fdopen取一个现存的文件描述符(我们可能从open , dup , dup2 , fcntl或pipe函数得到此文件描述符),并使一个标准的I / O流与该描述符相结合。此函数常用于由创建管道和网络通信通道函数获得的描述符。因为这些特殊类型的文件不能用标准I/O fopen函数打开,首先必须先调用设备专用函数以获得一个文件描述符,然后用f dopen使一个标准I / O流与该描述符相结合。 打开标准I / O流的type参数 打开标准I/O流的六种不同的方式 流的关闭: fclose() 功能:关闭一个标准流; 用法: #include stdio.h int fclose(FILE * fp) ; 返回值:若成功则为0,若出错则为EOF。 说明:在文件被关闭之前,刷新缓存中的输出数据。 缓存中的输入数据被丢弃。 如果标准I / O库已经为该流自动分配了一个缓存,则释放此缓存。 当一个进程正常终止时(直接调用exit函数,或从main函数返回),则所有带未写缓存数据的标准I / O流都被刷新,所有打开的标准I / O流都被关闭。 缓存 标准I / O提供了三种类型的缓存: (1) 全缓存。在这种情况下,当填满标准I / O缓存后才进行实际I / O操作。 (2) 行缓存。在这种情况下,当在输入和输出中遇到新行符时,标准I / O库执行I / O操作。 (3) 不带缓存。标准I / O库不对字符进行缓存。如果用标准I / O函数写若干字符到不带缓存的流中,则相当于用write系统调用函数将这些字符写至相关联的打开文件上。 标准出错流stderr通常是不带缓存的,这就使得出错信息可以尽快显示出来,而不管它们是否含有一个新行字符。 缓存特征 ANSI C要求下列缓存特征: (1) 当且仅当标准输入和标准输出并不涉及交互作用设备时,它们才是全缓存的。 (2) 标准错误决不会是全缓存的。 UNIX缓冲的默认特征: 标准出错是不带缓存的。 如若是涉及终端设备的其他流,则它们是行缓存的,否则是全缓存的。 更改缓存类型 对任何一个给定的流,可调用以下两个函数中的一个更改缓存类型: #include stdio.h #include stdio.h void setbuf(FILE *fp, char *buf) ; int setvbuf(FILE *fp, char *buf, int mod

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档