C和指针 第十五章 文件I/O和二进制I/O

stdio.h中包含了声明FILE结构

struct _iobuf {
        char  *_ptr;         //文件输入的下一个位置
        int   _cnt;          //当前缓冲区的相对位置
        char  *_base;        //指基础位置(应该是文件的其始位置)
        int   _flag;         //文件标志
        int   _file;         //文件的有效性验证
        int   _charbuf;      //检查缓冲区状况,如果无缓冲区则不读取
        int   _bufsiz;       //文件的大小
        char  *_tmpfname;    //临时文件名
};

FILE作为一种结构,用于访问一个流,如果激活了好几个流,那么每个流都有一个对应的FILE与他关联。当需要对流执行一些操作,调用一些函数,并向他们提供一个相关联的FILE参数。

对于ansi c运行时至少有三个流,标准输入stdin,标准输出stdout,标准错误stderr,他们都是指向FILE结构的指针。标准输入一般是键盘设备,输出是屏幕终端,一般错误和输出都是相同的,也可通过系统的输入\输出重定向进行指定输入输出。

$: program < source  > output

从source输入,输出到output。

流I/O总览

通过fopen函数打开一个流,指定读写模式,如果成功打开返回一个FILE *,打开失败返回NULL。fclose关闭流,关闭流可以防止文件被再次访问,保证储存于缓冲区的数据被正确的写入到文件。释放的FILE结构体,可以用于其他另外的文件。

I/O函数

I/O函数包括三种基本的形式处理数据:单个字符,文本行,二进制流

时间: 2024-08-01 10:50:21

C和指针 第十五章 文件I/O和二进制I/O的相关文章

C和指针 第十五章 错误报告perror和exit

15.1 错误报告 perror 任何一种程序都存在出错的可能,包括系统的函数库,当出现错误时,系统提示发生错误,标准库函数在一个外部整型变量中保存错误代码,然后把错误代码传给用户程序,提示错误原因.perror简化了向用户报告特定错误过程. void perror(char const * message); perror,接受字符串,先打印出这个字符串,然后在后面跟一个分号空格,然后打印出解释errno的错误代码的信息 #include <stdio.h> #include <err

C和指针 (pointers on C)——第十五章:输入输出函数

第十五章 输入输出函数 这一章读完的第一感觉就是"呵呵". 如果说上过C语言课,基本上scanf()/printf()算是用的比较熟练了.尤其是那些抽象的格式说明.还有scanf()为什么要加括号. 读过本书前面的内容的话,getchar(),putchar(),gets(),puts()这些应该也问题不大. 再如果的话,你学过计算机图形学,你玩过OpenGL,听说过双缓存机制,那么fflush()也肯定弄明白了. 再加上FILE的操作,输入输出定位刷新删除改名,流的概念. 这一章就会

第十五章 文件属性类的实现

                  第十五章    文件属性类的实现        根用户的权限也不能是无限大.必须考虑到保护用户的隐私!用户的文件内容.程序代码可设置为根用户也不能观看,只能是文件拥有者可以查看.修改.但根用户可以删除一切非根用户的文件.也可以查看用户的目录.所以,i_mode字符更改如下:      BU16 i_mode; // 描述文件的访问权限:文件的读.写.执行权限  // i_mode.15-13  ftype; 文件类型: 0-符号软连接文件, // 1-硬连接文

深入浅出Zabbix 3.0 -- 第十五章 Zabbix 协议与API

今天是六.一儿童节,祝小朋友们节日快乐!发完此文就带我家小朋友出去玩耍了. 第十五章 Zabbix 协议与API 本章将介绍和开发相关的Zabbix协议和API的内容,通过对Zabbix协议和API的深入了解,你可以利用Zabbix协议编写客户端程序并将其嵌入的产品或系统中,并将数据发送到Zabbix server,这在无法安装Zabbixagent等程序的场景(例如专用的嵌入式系统)中非常有用.你也可以利用Zabbix API开发自己的业务系统,或灵活的与现有系统整合集成. 15.1 Zabb

第十五章 链表

/** 数组与链表的区别:数组易随机访问,链表易插入和删除 链表组成:储存数据元素的数据域,储存下一结点地址的指针域 链表易于插入与删除 lists 的用法????????????????????? *///建立一个图书链表 #include<iostream> #include <string> using namespace std; struct book //第一步: 用于建立节点. class 默认为私有 struct 默认为公有 //节点组成:①数据域 ②指针域(*ne

C++ Primer Plus学习:第十五章

第十五章 友元.异常和其他 友元 友元类 表 0-1 class Tv { public: friend class Remote; } Remote类可以使用Tv的数据成员,Remote类在Tv类后定义 . 友元成员函数 表 0-2 class Tv; //前向声明 class Remote { public: void chanup(Tv &t); } class Tv { public: friend void Remote::set_chan(Tv& t, int c); } 异常

perl5 第五章 文件读写

第五章 文件读写 by flamephoenix 一.打开.关闭文件二.读文件三.写文件四.判断文件状态五.命令行参数六.打开管道 一.打开.关闭文件   语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号,filename为文件名,其路径可为相对路径,亦可为绝对路径.    open(FILE1,"file1");    open(FILE1, "/u/jqpublic/file1");  打开

Gradle 1.12用户指南翻译——第四十五章. 应用程序插件

文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/usergu

Gradle 1.12用户指南翻译——第二十五章. Scala 插件

其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,目前