原创 【博客大赛】《C和指针》摘抄整理型笔记十

2014-10-16 16:04 2220 17 18 分类: 处理器与DSP 文集: C和指针

/*

读书笔记类型多种多样,有摘抄型的,有感想型的,有批注型的,有摘要型的……

现在正在研读《C和指针》,其中有很多我认为必要的知识点,摘抄并简单整理了一下,记录在这里。

*/

 

67. ANSI CI/O操作进行了抽象。就C程序而言,所有的I/O操作只是简单地从程序移进或移出字节,因此,这种字节流被称为流(stream)。程序只需要关心创建正确的输出字节数据以及正确地解释从输入读取的字节数据。

 

68.  绝大多数流是完全缓冲的(fully buffered),这意味着“读取”和“写入”实际是从一块被称为缓冲区(buffer)的内存区域来回复制数据。从内存中来回复制数据是非常快速的。用于输出流缓冲区只有当它写满时才会被刷新(flush,物理写入)到设备或文件中。

 

69. 一种常见的调试策略是把一些printf函数的调用散布于程序中,确定错误出现的具体位置。但是这些函数调用的输出结果被写入到缓冲区中,并不是立即显示于屏幕上。如果程序失败,缓冲输出可能不会被实际写入。解决这个问题的方法就是在每个用于调试的printf函数之后,立即调用fflush,如:

   printf( “something or other” );

   fflush( stdout );


fflush函数原型:

   fflush( FILE *stream );

它迫使一个输出流的缓冲区的数据进行物理写入,不管它是不是已经写满。

 

70. 流分为文本(text)流和二进制(binary)流。

文本流在不同的操作系统中,特性会有区别,主要有一是文本行的最大长度,但至少有254个字符(标准规定);二是文本行结束方式不同,有的系统是一个回车 一个换行符,有的是只用一个换行符。

二进制流的字节将完全根据程序编写它们的形式写入到文件或设备中,而且完全根据它们从文件或设备读取的形式读入到程序中。

 

71. FILE是一种数据结构,用于访问一个流,其声明包含在stdio.h中,不要将它与存储在磁盘上的数据文件相混淆。如果同时激活了几个流,每个流都有一个相应的FILE与它相联。为了在流上执行一些操作,可以调用一些合适的函数,并向它们传递一个与这个流关联的FILE参数。

 

72. 对于每个ANSI C程序,运行时系统必须提供至少三个流——标准输入(standard input)、标准输出(standard output)和标准错误(standard error)。它们的名字分别是stdinstdoutstderr,它们都是指向FILE结构的指针。

   标准输入是缺省情况下输入的来源,标准输出是缺省情况的输出设置,具体缺省值因编译器而异,通常标准输入为键盘,标准输出为终端或屏幕。标准错误就是错误信息写入的地方。

 

73. stdio.h中定义了很多I/O常量,常用的有:

1EOF——提示到达了文件末尾,EOF所选择的实际值比一个字符要多几位,这是为了避免二制值被错误地解释为EOF.

2FOPEN_MAX——表示一个程序最多能够打开多少文件,该常数包括三个标准流,其值至少是8,具体值由编译器决定。

3FILENAME_MAX——编译器所支持的最长文件名。

 

74. 与文件相关的I/O操作一般流程:

   1)程序为必须同时处于活动状态的每个文件声明一个指针变量,其类型为FILE *,这个指针指向FILE结构,当它处于活动状态时由流使用。

   2)流通过调用fopen函数打开,使用fopen要指定需要访问的文件或设备以及它们的访问方式(如读、写或既读又写)。fopen和操作系统验证文件或设备确实存在并初始化FILE结构。

   3)根据需要对该文件进行读取或写入。

   4)调用fclose函数关闭流。关闭一个流可以防止与它相关联的文件被再次访问,保证任何存储于缓冲区的数据被正确地写到文件中,并且释放FILE结构使它可以用于另外的文件。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2015-10-25 22:35

I thank you humbly for shniarg your wisdom JJWY
相关推荐阅读
飞言走笔 2017-01-06 21:56
2017,新的博客旅程
EDNChina 改版终于成功了!祝贺! 2017年,开始新的旅程~ ...
飞言走笔 2016-06-01 10:17
【博客大赛】《白鹿原》读后
《白鹿原》这本书已经买了很久,多次以来,都是只翻看几页,顶多几章就放下了,觉得这是一个大部头,得有足够的时间才行。前几天陈忠实先生去世的消息传来,让我很震惊和惭愧。 一口气读完这本书,畅快淋漓,又意...
飞言走笔 2016-03-26 16:42
【博客大赛】《毛斯朝》读后
这本书最早是在凤凰卫视曾子墨主持的一期关于沈志华先生的《世纪大讲堂》节目中知晓的。但是一直拖到今天才读完。 说实话,书的主要内容与当前官方的宣传口径有很多不一致的地方,而沈先生作为中国掌握苏联档...
飞言走笔 2016-03-08 13:46
【博客大赛】蓝牙4.0低功耗技术及其认证要求
详见附件 ...
飞言走笔 2016-02-02 14:20
【转】蓝牙4.0协议官方手册(一)——通用属性配置文件
转自:http://blog.csdn.net/jinzhichaoshuiping/article/details/43370009 通用属性配置文件 (GATT)——该说明书定义了通用属性配置...
飞言走笔 2016-01-31 23:24
【博客大赛】脑洞大开、三观重塑——《人类简史》读后
终于读完了《人类简史》,没有把这本书拖到二月份,这也是2016年读完的第一本书。之前也有所耳闻,但是没有太在意,倒是罗胖子的跨年演讲上偶然提到,不知怎么就勾起了阅读此书的欲望。 本文的标题用了“脑洞...
EE直播间
更多
我要评论
1
17
关闭 站长推荐上一条 /3 下一条