设为首页 加入收藏

TOP

C语言:未格式化的行I/O
2014-11-24 12:29:32 来源: 作者: 【 】 浏览:1
Tags:语言 格式 I/O

一.前言
1.行I/O可以用两种方式执行—未格式化的或格式化的。这两种形式都用于操作字符串。


2.未格式化的I/O:简单读取或写入字符串,而格式化的I/O则执行数字和其他变量的内部和外部表示形式之间的转换。


二.未格式化I/O
1.未格式化I/O函数声明


1>char *fgets(char *buffer,int buffer_size,FILE *stream);


2>char *gets(char *buffer);


3>int fputs(char const *buffer,FILE *stream);


4>int puts(char const *buffer);


1.gets和puts函数家族是用于操作字符串而不是单个字符。


2.fgets从指定的stream读取字符并把它们复制到buffer中。当它读取一个换行符并存储到缓冲区之后就不再读取。如果缓冲区内存储字符数到达buffer_size-1时它也停止读取。


1>在任何一种情况下,一个NUL字节将被添加到缓冲区所存储数据的末尾,使它成为一个字符串。


2>如果在任何字符读取前就到达了文件尾,缓冲区就未进行修改,fgets函数返回一个NULL指针。否则fgets返回它的第一个参数(指向缓冲区的指针)。这个返回值通常只用于检查是否到达了文件尾。


3.传递给fputs的缓冲区必须包含一个字符串,它的字符被写入到流中。这个字符串以NUL字节结尾,所以这个函数没有一个缓冲区长度参数。这个字符串是逐字写入的:如果它不包含一个换行符,就不会写如换行符。如果它包含了好几个换行符,所有的换行符都会被写入。因此,当fgets每次都读取一整行时,fputs既可以一次写如一行的一部分,也可以一次写入一整行,甚至可以一次写入好几行。如果写入时出现了错误,fputs返回常量值EOF,否则它将返回一个非负值。


4.gets和puts函数几乎和fgets 与fputs相同。他们之间的一个主要区别是:


1>当gets读取一行输入时,它并不在缓冲区中存储结尾的换行符。当puts写入一个字符串时,它在字符串写入之后向输出再添加一个换行符。


2>另一个区别仅仅在于gets,它没有缓冲区长度参数。因此gets无法判断缓冲区的长度。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言中的刷新和定位函数 下一篇Eclipse中调试Nutch2.0

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)