文件的输入输出(从磁盘到磁盘).doc_第1页
文件的输入输出(从磁盘到磁盘).doc_第2页
文件的输入输出(从磁盘到磁盘).doc_第3页
文件的输入输出(从磁盘到磁盘).doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

23 文件的输入输出(从磁盘到磁盘)在上一节通过cin和cout实现了从键盘输入数据和将数据输出到屏幕中显示的方法。本节主要介绍如何从磁盘文件中获得数据和把程序中的数据输出保存到磁盘文件中。C+程序中把数据从键盘输入和输出到屏幕默认为标准操作。实现对磁盘文件的操作可以看成是一种数据输入输出的重定向,即输入输出的方向从键盘和屏幕改变为磁盘。 231 输入输出重定向下面对例ch2_1加以改进,把原来对屏幕的输出,改为对指定文件的输出,以便实现数据输入输出的重定向功能。例ch2_8文件读写的例子#include #include void main ( ) int m = 7 , n = 4 ; float a = 5.0 , b = 6.5 , x ; char c1=a,c2; ofstream cout(g:cch2_8ch2_8.txt); x = a*b; c2=c1+1; cout m+n endl ; cout x endl; cout c2 endl; 打开文件g:cch2_8ch2_8.txt,其结果为1132.5b例ch2_8的结果与例ch2_1的结果完全相同。分析例ch2_8可见,要实现对文件的输出,需有以下几点改进。1 增加 #include ,这是为下面一条语句的使用作说明。2 增加 ofstream cout(g:cch2_8ch2_8.txt); 实现重定向功能。该语句告诉计算机以后对cout的输出改为对文件ch2_8.txt的的写入。3 由于转义字符以“”开头,为避免出现二义性,文件名中表示路径用的“”必须以“”代替。例ch2_9 在文件ch2_9_in.txt 中有一位学生五门课的成绩,求其平均值并将结果保存到文件 ch2_9_out.txt中。以上两个文件存放在 g:cch2_9目录中,五门课的成绩分别为:85 68 72 94 88。#include #include void main ( ) float s1,s2,s3,s4,s5,average; ifstream cin(g:cch2_9ch2_9_in.txt); ofstream cout(g:cch2_9ch2_9_out.txt); cin s1s2s3s4s5; average=(s1+s2+s3+s4+s5)/5; cout average score : average endl; 程序运行后,文件ch2_9_out.txt中的内容为:average score : 81.4说明:语句 ifstream cin(g:cch2_9ch2_9_in.txt); 实现重定向输入。即以后从cin的输入来源于文件ch2_9_in.txt中。归纳:为实现重定向需定义:ofstream:输出,用于向文件中写入内容。ifstream:输入,用于从文件中读出内容。fstream:输入输出,用于既要读又要写的文件的操作。以及包含文件fstream.h 。232文件的操作以上,虽已实现了对文件的读写,但对于同时还要实现标准的输入输出比较麻烦,缺少灵活性。可以采用以下方法实现文件的灵活操作。1 文件变量的定义文件变量的定义格式是: 文件变量类型 文件变量名; 定义输入文件变量infile 例: ifstream infile; 定义输出文件变量outfile例: ofstream outfile;2 文件的打开与关闭磁盘上可能有众多的文件,所以在文件开始读写之前,必须先要指定对什么文件进行操作,这就是所谓的打开文件。可以用.open(文件名)来打开文件,例如:打开文件:infile.open(income.ini);由于磁盘上的文件可能会因为没有写对路径、文件损坏等原因而不能打开,所以在文件打开的操作上,一般会采用如下“标准”格式,以便及时发现错误;从文件中读入数据:ifstream infile; /定义输入文件变量infile.open(income.ini); /打开输入文件if(!infile) /测试文件的打开状态 cout不能打开income.ini文件n; return 0;把数据写入到文件中:ofstream outfile; /定义输出文件变量outfile.open(tax.out);/打开输出文件 if(!outfile) /测试文件的打开状态 cout不能打开tax.out文件n; return 0; 上述if为分支语句,将在第四章讲述,用于上面程序中的作用是:当打开文件失败时,会报告不能打开文件。并用return 0;语句返回一个0。文件打开后,会占用计算机系统的资源,随着文件打开的数量的增加,严重的会导致系统资源耗尽并导致系统崩溃。所以当打开的文件不再使用后,应尽快关闭已打开的文件。关闭文件的语句是: 关闭文件: infile.close(); outfile.close();3 文件的读写文件的读写与标准输入输出的读写相似,只是不使用cin和cout,而是采用所定义的文件变量名。如上面的infile相当于cin而outfile相当于cout。例ch2_10 在文件ch2_10_in.txt 中有一位学生五门课的成绩,求其平均值并将结果保存到文件 ch2_10_out.txt中。以上两个文件存放在 g:cch2_10目录中,五门课的成绩分别为:85 68 72 94 88。这是对例ch2_9的改进。#include /包含文件操作库函数#include /包含输入/出库函数int main() ifstream infile; /定义输入文件变量 ofstream outfile; /定义输出文件变量 float s1,s2,s3,s4,s5,average; infile.open(g:cch2_10ch2_10_in.txt); /打开输入文件 if(!infile) /测试文件的打开状态 cout不能打开ch2_10_in.txt文件n; return 0; outfile.open(g:cch2_10ch2_10_out.txt);/打开输出文件 if(!outfile) /测试文件的打开状态 couts1s2s3s4s5; /从文件中输入五个据 average=(s1+s2+s3+s4+s5)/5; outfile average score : average endl; /输出到文件 cout ave

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论