第十三章 和文件进行通信

程序和文件进行通信简单的一种方式是通过文件重定向,

文件:

文件,它其实是在磁盘上的一段存储区,之不过它是已命名的。它分为文本视图和二进制视图。在二进制视图中,文件中的每个字节都可为程序所访问,而在文本视图中,程序看到的内容和文件的内容有可能不同。

i/o级别:

低级I/O:使用操作系统提供的基本I/O服务。标准高级I/O:使用一个标准的C库函数包和头文件中的定义(可移植性好, 处理不同I/O方便,处理速度快(缓冲))。

exit()函数:

它的作用是关闭所有打开的文件并终止程序,它的参数会被传递给一些操作系统,以供其他程序使用。通常的约定是正常的终止的程序传递值0,非正常终止的程序传递一个非0值,不同退出值可以用来标识导致程序失败的不同原因。在最初调用的main ()中使用return 和调用exit ()效果相同,如果是在递归中程序中,exit()仍然会终止程序,但return
将控制权移交给递归的前一级,直到最初的那一级,此时return才会终止程序。也就说retrun和exit()的区别在于,即使在除main()之外的函数中调用exit (),它也将终止程序。

fopen ()函数:函数原型:FILE * fopen(const char * path,const
char * mode);

fopen ()函数接受两个参数。第一个参数为要打开的文件名(包含该文件名的字符串的地址),第二个用于指定文件打开的模式的一个字符串。它的返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno

模式字符串

模式字符串 意义
"r" 打开一个文本文件,可以读取文件
"w" 打开一个文本文件,可以写入文件,先将文件的长度截为零,如果文件不存在则先创建之
"a" 打开一个文本文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则先创建之
"r+" 打开一个文本文件,可以进行更新,也即可以读取和写入文件
"w+" 打开一个文本文件,可以进行更新,也即可以读取和写入文件,如果该文件存在则首先将其长度截为零

如果不存在则创建之

"a+" 打开一个文本文件,可以进行更新(可读取与写入)向已有文件的尾部追加内容,如果该文件不存在则

创建之,可以读取整个文件,但是写入时只有追加内容

"rb","wb","ab",“ab+",

" a+b","wb+","w+b","ab+",

"a+b"

与前面的模式相似,只是使用二进制模式而非文本模式打开文件

getc()函数和putc ()函数:

这两个函数与getchar ()和putchar ()差不多,只是一个使用文件获取,一个使用标准输入,输出。

getc():

功 能: 从流中取字符

用 法: int getc(FILE *stream);

getc的调用形式:ch=getc(fp);此处的fp是文件指针;函数功能是从文件指针指向的文件读入一个字符,并把它作为函数值返回给字符型变量ch。如果读取失败则返回NULL.若读到文件尾而无数据时便返回EOF.

putc()函数用于输入一个字符到指定流中,其原型如下:

int putc(int ch, FILE *stream);

【参数】参数ch表示要输入的位置,参数stream为要输入的流。

【返回值】若正确,返回输入的的字符,否则返回EOF。

fclose ()函数

fclose (fp)函数关闭由fp指定的文件,同时根据需要刷新缓冲区。

if (fclose  (fp ) != 0)  //如果文件成功关闭,fclose ()函数返回值0,否则返回EOF

printf ("Error in closing file %s\n", argv [1]);



时间: 2024-11-13 09:43:07

第十三章 和文件进行通信的相关文章

linux十三章find文件查找

之前有介绍过文本查找的grep命令: 文件查找的有三种方法: 1)locate:非实时,模糊匹配,查找是跟进全系统文件数据库进行的,因此将所有包含关键字的内容都遍历可以说是很费时间的查找方法 2)#updatedb:它是手动生成文件数据裤,速度快,依赖于数据库,按时更新 3)find:它是实时精准,支持众多查找标准,遍历指定目录的所有文件,速度慢 find 查找路径-查找标准,查找后的处理工作 栗子:#:find /etc 'passwd‘ 指查找etc目录下的所有包含passwd的文件 匹配标

C Primer Plus 第十三章 学习总结……2015.5.8

第十三章:文件的输入/输出 这一章学习起来,很迷惑,和上面几章并不太连贯,介绍了好多 用于文件输入输出的函数,就像高中学习数学一样,一下子出现好多 公式,虽然每个公式都知道是干什么的.怎么用,但就不一定把习题 做出来了.把本章看完后,只是大致了解了文件的各种输出输入,打 开等方式.所以还需要进一步的了解,实践应用. <重定向运算符,  echo_eof<words 该运算符把words文件与 stdin流关联起来,将该文件words内容引导至echo_eof程序中. echo_eof将键盘输入

第十三章、磁盘文件管理

第十三章.磁盘管理 本章内容 磁盘结构 1.分区类型 管理分区 2.管理文件系统 3.挂载设备 管理虚拟内存 设备文件 ?I/O Ports: I/O设备地址 ?一切皆文件: open(), read(), write(), close() ?  设备类型: 块设备:block,存取单位"块",磁盘 字符设备:char,存取单位"字符",键盘 ?  设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信 ?  设备号码: 主设备号:major numb

javascript高级程序设计 第十三章--事件

javascript高级程序设计 第十三章--事件js与HTML的交互就是通过事件实现的,事件就是文档或浏览器窗口中发生的一些特定的交互瞬间. 事件流:事件流描述的是从页面中接收事件的顺序,IE的是事件冒泡流,Netscape的是事件捕获流,这个两个是完全相反的事件流概念. 事件冒泡:由最具体的元素接收,然后逐级向上传播到更高级的节点,即事件沿DOM树向上传播,直到document对象. 事件捕获:不大具体的节点应该更早接收到事件,相当于沿DOM节点树向下级传播直到事件的实际目标,在浏览器中,是

JavaScript高级程序设计:第十三章

第十三章 一.理解事件流 事件流描述的是从页面中接收事件的顺序. 1.事件冒泡 IE的事件流叫做事件冒泡,即事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点.以下面的HTML页面为例: <!DOCTYPE html> <html> <head> <title>Event Bubling Example</title> </head> <body> <div id="myDiv"&g

HTML与CSS入门——第十三章  使用框架

知识点: 1.建立框架集的方法 2.在框架和窗口之间链接的方法 3.使用内联框架的方法 13.1 什么是框架: 框架是浏览器窗口中的一个矩形区域,每个框架显示的是一个完整的页面. 作者不建议使用框架,原因: 1.框架与Web的基础概念冲突 /*什么概念?*/ 2.框架化的网站的打印部分非常困难. 3.如果框架爱缺乏合适的编码,或者有合适的编码但是被用于邪恶的目的,用户可能在框架化的网站中无法看到框架外部的内容. /*不明白……*/ 4.框架已经从html5标准中移除…… 但是iframe依旧存在

perl5 第十三章 Perl的面向对象编程

第十三章 Perl的面向对象编程 by flamephoenix 一.模块简介二.Perl中的类三.创建类四.构造函数 实例变量 五.方法六.方法的输出七.方法的调用八.重载九.析构函数十.继承十一.方法的重载十二.Perl类和对象的一些注释 本章介绍如何使用Perl的面向对象编程(OOP)特性及如何构建对象,还包括继承.方法重载和数据封装等内容.一.模块简介    模块(module)就是Perl包(pachage).Perl中的对象基于对包中数据项的引用.(引用见第x章引用).详见http:

第十三章 进程、线程类的实现

                                        第十三章   进程.线程类的实现         多线程是指在一个进程内可以同时运行多个任务,每个任务由一个单独的线程来完成.线程是进程运行的基本单位,一个进程中可以同时运行多个线程.如果程序被设置为多线程方式,可以提高程序运行的效率和处理速度. 多个线程共用一个进程的资源:进程的调度.切换是在10ms的"时钟滴答"定时中断程序里进行.如果一个线程获得CPU,那么在下一个Tick到来前:是不可能被切换出去的

现代软件工程 第十三章 练习与讨论

13.5.2  有错不改 果冻: 微软的产品经过这么多版本的不断完善,应该是把所有问题都搞定,“止于至善”了吧? 阿超: 那也不一定,在非常有名的电子表格软件Excel中,就有这样一个Bug:Excel 的日期计算功能认为1900年是一个闰年,这是不对的,但是它愣是一直没有改正这个错误. 众人: 真的?为什么屡教不改呢? 阿超: 故事是这样的,当时这类电子表格软件的市场领头羊是Lotus 1-2-3这一款软件.它的日期计算功能有一个Bug,就是把1900年当作闰年.这类软件在内部把日期保存为“从