- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]c语言文件的输入输出
C语言文件的输入与输出
一. 文件指针
??每个被使用的文件都在内存中开辟一个区,用来存放文的有关信息(如文件的名字、文什状态及文件当前位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE。在sudio.h文件中有以下的文类型声明:typedef struct{hort level; ??/*缓冲区“满”或“空”的程度*/???????unsignedflags; /*文件状态标志*/???????char fd; ???????/*文件描述符*/???????unsigned char hold;?? /*如无缓冲区不读取字符*/???????short bsize; ???????/*缓冲区的大小*/???????unsigned char *buffer;/*数据缓冲区的位置*/???????unsignedar *curp; ???/*指针,当前的指向*/???????unsigned istemp; ????/*临时文件,指示器*/???????short token;??????? /*用于有效性检查*}FILE; ???在缓冲文件系统中,每个被使用的文件都要在内存中开辟一FILE类型的区,存放文件的有关信息。??? FILE类型的数组FILE f[5];定义了一个结构体数组f,它有5个元素,可以用来存放5个文件的信息。FILE *fp;“text.exe”, “rb”);
ch=getc(fp);
第一行语句只定义了一个没有指向的文件指针fp,第二行是打开文件text.exe,并同时确定对访问文件的操作方式(此处对访问的文件只进行读操作),这时给文件结构中的成员信息赋值,并使fp指向text.exe文件,第三行是利用文件指针对文件进行操作,操作方式应当与打开文件时确定的方式一致(只读)。由此可以看出,操作文件过程中不出现对文件结构成员的访问语句。? 如果有n个文件,一般应设n个指针变量,使它们分别指向n个文件,
二.文件的打开与关闭
文件的打开(fopen函数)①需要打开的文件名,也就是准备访问的文件的名字;??? ②使用文件的方式(“读”还是“写”等);??? ③让哪一个指针变量指向被打开的文件。
fopen(文件名”使用文件方式”);??? FILE=fopen(“文件名”使用文件方式”);
例:fp=fopen(“”, “r”);
它表示,要打开的文件名为file,操作方式为读入,fopen函数返回指向file文件的指针并赋值给指针变量fp,这样fp和文件file就建立了联系。文件名字符串允许带有路径,使用路径时,路径分隔符是“\” 而不是“\\”。
例如:FILE *fp,*fq;
fp=fopen(“student”,“w”);
fq=fopen(“D:liuli\student34”,“r”);
以上语句表明,在当前磁盘,当前目录下以只写方式打开一个新文件,并将该文件的内存存储的首地址赋予文件指针fp,再以只读方式打开D盘liuli子目录下名字为student34的已经存盘的旧文件,并将该文件的内存存储的首地址赋予文件指针fq。
注意:如果fopen函数调用失败,即文件打开失败,fopen函数将返回空指针NULL,NULL在头文件中被定义为0.
文件使用方式含义 含义 打开文件方式 “r” 打开一个文本文件 只读 “w” 打开一个文本文件 只写 “a” 向文本文件尾增加数据 追加 “rb” 打开一个二进制文件 只读 “wb” 打开一个二进制文件 只写 ab” 打开一个二进制文件,向二进制文件尾增加数据 追加 “r” 打开一个文本文件 读写 w+” 建立一个新的文本文件 读写 “a+” 打开一个文本文件 读写 rb++” 打开一个二进制文件 读写 “wb+” 建立一个新的二进制文件 读写 “ab+” 打开一个二进制文件 读写 说明:??? (1)用“r”方式打开文件,而且该文件应该已经存在,不能用“r”方式打开一个并不存在的文件;否则出错。??? (2)用“w”方式打开的文件只能用于向该文件写数据(即输出文件),而不能用来向计算机输入。如果原来不存在该文件,则在打开时新建立一个以指定的名字命名的文件。如果原来已存在一个以该文件名命名的文件,则在打开时将该文件删去,然后重新建立个新文件。??? (3)如果希望向文件末尾添加新的数据(不希望删除原有数据),则应该用“a”方式打开。但此时该文件必须已存在;否则将得到出错信息。打开时,位置指针移到文件末尾。??? (4)用r”、“w+”、“a+”方式打开的文件既可以用来输人数据,也可以用来输出数据。用r”方式时该文件应该已经存在
文档评论(0)