视图文件与二进制文件

这两天,单位没什么活儿,可以有时间自己想干什么就干什么了,哈哈。于是,抓了一本 C Primer Plus 的书,翻一翻。以下是俺自己的一些读书笔记,写下来,怕自己以后忘记了。

  1,程序和文件进行通信的一种方式就是文件重定向。这种方法简单但有局限性。假如要编写一个交互式程序,向用户询问书名,然后将完整的列表保存在一个文件中。如果像下面这样使用重定向:books > bklist 程序给出的交互式提示就会被重定向到bklist。这不仅会导致将不希望的文本写入bklist, 而且用户也将无法看到需要回答的问题。

    幸运的是,C提供了功能更为强大的文件通信方法。使用这种方法您可以在程序中打开文件,然后使用专门的I/O 函数读取文件或者写入文件。
2,文件是什么?
    一个文件(file)通常就是磁盘上一段 命名存储区。 但对于操作系统来说,文件就会更复杂一些。例如,一个大文件可以存储在一些分散的区段中,或者还会包含一些使操作系统可以确定其文件类型的附加数据,但是这些是操作系统而不是程序员(除非您是在编写操作系统)要考虑的。您需要考虑的是如何在C程序中处理文件。
   C将文件看成是连续的字节序列,其中每一个字节都可以单独的读取。这与UNIX环境(C的发源地)中的文件结构是一致的。因为其他的环境中的文件模型可能会有所不同,所以ANSI C 提供了文件的两种视图:文本视图和二进制视图。
3,文本视图和二进制视图
    在二进制视图中,文件中的每个字节都可以被程序所访问。在文本视图中,程序看到的内容和文件的内容有可能不同。例如,使用文本视图读取文件时,将把行尾的本地环境表示法映射为C视图。与之类似,在输出的时候,也会将C视图中的行尾表示映射为本地环境表示法。例如,MS-DOS文本文件用 回车符和换行符的组合 /r/n来表示行尾。Macintosh文本文件只用一个回车符/r来表示行尾。C 程序使用一个/n表示行尾。所以,如果C 程序以文本视图模式处理一个MS-DOS文本文件,在读取文件时它会将/r/n 转换为/n,在写入文件的时候它会将/n转换为/r/n ;而对于Macintosh文本文件的文本视图,在读取文件时它会将/r转换成/n, 在写入文件时把/n转换为/r 。
4,处理一个MS-DOS文本文件不必局限于仅仅使用文本视图。如果使用二进制视图,程序将看到文件中的/r和/n字符,没有任何映射发生。MS-DOS区分文本 文件和二进制 件,但C提供的是文本和二进制 视图。通常,对于文本文件使用文本视图,对于二进制文件使用二进制视图。但是,您也可以使用任何一种视图处理任一种文件,尽管用文本视图处理二进制文件的效果很糟。
 
5,尽管ANSI C 体gonlewenben视图和二进制视图,但这两种视图的实现可以是相同的。例如,由于UNIX仅采用一种文件结构,所以这两种视图在UNIX实现中就是相同的。
             
  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值