C语言程序设计-数据流与文本文件读写

第6章数据流与文本文件读写
Ch6数据流与文本文件读写
6.1 目录与文件管理 6.2 文本文件的读写
2
6.1目录与文件管理
6.1.1 System.Environment类和System.DriveInfo类 6.1.2 System.IO.Path类 6.1.3 目录管理 6.1.4 文件管理
(3)追加文件(AppendAllText方法)
利用File类提供的静态AppendAllText方法用于 将指定的字符串追加到文件中,如果文件不存在则自 动创建该文件。
21
6.2.2 利用File类读写文本文件
【例6-2】演示利用File类读写文本文件的基本用法, 以及OpenFileDialog和SaveFileDialog对话框的基本用 法,运行效果如图6-1所示。
2.System.IO.File类
System.IO命名空间下的File类提供了非常方便的 读写文本文件的方法,很多情况下只需要一条语句即 可完成本地文件的读写操作。
19
6.2.2 利用File类读写文本文件
(1)新建文件(WriteAllText方法、WriteAllLines方 法)
³ System.IO.File.ReadAllText方法方法创建一个新文件,在 其中写入指定的字符串,然后关闭文件。如果目标文件已 存在,则覆盖该文件。
³ Move:将文件或目录及其内容移到新位置 ³ Exists:判断目录是否存在 ³ GetCurrentDirectory:获取应用程序的当前工作
目录
6.1.4 文件管理
System.IO命名空间中文件操作类: (1)File (2)FileInfo 相同点:都能完成对文件的复制、移动、重命名、创 建、打开、删除和追加到文件操作。
12
6.1.4 文件管理(续)
5、判断某个路径是目录还是文件
if ((File.GetAttributes(path) & FileAttributes.Directory) == FileAttributes.Directory) {
Console.WriteLine("{0}是目录", path); } else {
File.Copy(path1, path2, true); true表示如果目标文件已存在,就直接覆盖。
11
6.1.4 文件管理(续)
3.删除文件
public static void Delete (string path)
4、移动文件
public static void Move (string sourceFileName, string destFileName)
GB2312、GB18030。
System.TextEncoding类:表示字符编码。常用有:
Encoding.Default 表示操作系统的当前ANSI编码
Encoding.Unicode
Unicode编码
Encoding.UTF8 UTF8编码
注意:打开文件时指定的编码格式一定要和保存文件时所用的编 码格式一致,否则看到的可能就是一堆乱码。
在System.IO命名空间中,提供了多种类用于进 行数据文件和数据流的读写操作。
主要有: 1. 文件编码,提供了多种编码。 2. 文本文件的读写。 3. 二进制文件的读写。
15
6.2.1 数据流与文件编码
1.数据流
数据流(Stream)是对串行传输数据的一种抽象 表示,当希望通过网络逐字节串行传输数据,或者对 文件逐字节进行读写操作时,需要将数据转化为数据 流。 (1)数据流相关的类
System.IO命名空间下的Stream类是所有数据流 的基类。
16
6.2.1 数据流与文件编码
(2)对数据流的基本操作 读取:从数据流中读取数据到变量中。 写入:把变量中的数据写入到数据流中。 定位:重新设置数据流的当前位置,以便对其进 行随机读写。
17
6.2.1 数据流与文件编码
常见的文件编码方式:ASCII、Unicode、UTF8、ANSI、
Console.WriteLine("Drive {0}", ); Console.WriteLine("文件类型: {0}", d.DriveType); if (d.IsReady == true) {
Console.WriteLine("卷标: {0}", d.VolumeLabel); Console.WriteLine("文件系统: {0}", d.DriveFormat); Console.WriteLine("当前用户可用空间:{0} bytes", d.AvailableFreeSpace); Console.WriteLine("总可用空间:{0} bytes", d.TotalFreeSpace); Console.WriteLine("驱动器总容量:{0} bytes ", d.TotalSize); } }
2.读/写文件 (1)Read方法
FileStream对象的Read方法用于将文件中的数据读 到字节数组中。
6.2.3 利用文件流读写文本文件
(2)Write方法
FileStream对象的Write方法用于将字节数组写入 文件中。
【例6-3】演示利用FileStream类读写文本文件的 基本用法,运行效果如图6-2所示。
Console.WriteLine("{0}是文件", path); }
13
6.2 文本文件的读写
在System.IO命名空间中,提供了多种类用于进 行数据文件和数据流的读写操作。
主要有: 1. 文件编码,提供了多种编码。 2. 文本文件的读写。 3. 二进制文件的读写。
14
6.2.1 数据流与文件编码
6.1.1 System.Environment类和 System.DriveInfo类
1. System.Environment类 使用Environment类可检索与操作系统相关
的信息
常用的属性和方法(表6-1)
³ CurrentDirectory属性 ³ OSVersion属性 ³ NewLine属性 ³ Version属性 ³ GetLogicalDrives方法 ³ GetFolderPath方法
22
6.2.3 利用文件流读写文本文件
1.创建FileStream对象
³ 利用构造函数创建FileStream对象
FileStream(string path,FileMode mode,FileAccess access)
³ 利用File类创建FileStream对象
FileStream fs= File.OpenRead(@"D:\ls\File1.txt");
³ System.IO.File.WriteAllLines方法创建一个新文件,在其 中写入指定的字符串数组,然后关闭文件。如果目标文件 已存在,则覆盖该文件。
20
6.2.2 利用File类读写文本文件
(2)打开文件(ReadAllText方法、ReadAllLines方 法)
利用File类提供的静态ReadAllText方法可打开一个文件, 读取文件的每一行,将每一行添加为字符串的一个元素,然 后关闭文件。
6.1.1 System.Environment类和System.DriveInfo类
【例6-1】演示Environment类和DriveInfo类 的基本用法。
6.1.2System.IO.Path类
Path类用于对包含文件或目录路径信息的 String实例执行操作
常用方法(表6-2):
³ GetDirectoryName方法 ³ GetExtension方法 ³ GetFileName方法 ³ GetFileNameWithoutExtension方法 ³ GetFullPath方法
6.1.3 目录管理
1、Directory类和DirectoryInfo类均可用于 对磁盘和目录进行管理,如复制、移动、重 命名、创建、删除目录等。 2、两个类的不同点在于DirectoryInfo类提 供了更详细的功能,而且必须被实例化后才 能使用,而Directory类则只提供了常用的静 态方法。 3、最常用的是Directory类。
不同点:FileInfo类提供实例化后的属性、方法 File 只提供静态方法 用法与Directory和DirectoryInfo相似。
10
6.1.4 文件管理(续)
1、判断文件是否存在 if (File.Exists(@“E:\ls\MyTest1.txt")){…} 2、复制文件
6.1.1 System.Environment类和System.DriveInfo类
2. System.DriveInfo类
使用DriveInfo可以确定当前可用的驱动 器以及这些驱动器的类型,还可以通过查询 来确定驱动器的容量和剩余空间。
DriveInfo[] allDrives = DriveInfo.GetDrives( ); foreach (DriveInfo d in allDrives){
8
6.1.3目录管理
4、Directory类提供的静态方法
³ Createห้องสมุดไป่ตู้irectory:创建指定路径中的所有目录 Directory.CreateDirectory(@"c:\test");
³ Delete:删除指定的目录 Directory.Delete(@"c:\test", true);
18
6.2.2 利用File类读写文本文件
合集下载

《C++程序设计》学习笔记总结 - 第八章 文件操作

《C++程序设计》学习笔记总结 - 第八章 文件操作

第八章文件操作一、文件基本概念和文件流类文件基本概念和文件流类从不同的角度来看待文件就可以得到不同的文件分类。

C++根据文件数据的编码方式不同分为文本文件和二进制文件。

根据存取方式不同分为顺序存取文件和随机存取文件所谓“文本文件”和“二进制文件”是从文件格式的角度进行分类,是约定俗成的、从计算机用户角度出发进行的分类。

所谓的“顺序存取文件”和“随机存取文件”是根据访问文件中数据的方式来划分的。

顺序存取文件就是按照文件中数据存储次序进行顺序操作,为访问第i 个数据,就首先要访问第i-1个数据,在整个文件操作过程中,将移动位置指针的工作交给系统自动完成。

磁带文件就是一个典型的顺序存取文件。

随机访问文件是根据应用的需要,通过命令移动位置指针直接定位到文件内需要的位置并进行数据操作。

对文件的基本操作分为读文件和写文件。

所谓“读文件”就是将文件中的数据读入内存之中,也称为“输入”。

所谓“写文件”就是将内存中的数据存入文件之中,也称为“输出”。

C++标准类库中有3个流类可以用于文件操作,这3个类统称为文件流类,分别如下:1)ifstream:用于从文件中读取数据。

2)ofstream:用于向文件中写入数据。

3)fstream:既可用于从文件中读取数据,又可用于向文件中写入数据。

使用这3个流类时,程序中需要包含fstream头文件。

类ifstream和类fstream都是从类istream派生而来的,因此类ifstream拥有类istream的全部成员函数。

同样,类ofstream和类fstream也拥有类ostream的全部成员函数。

这3个类中有一些十分熟悉的成员函数可以使用,如operator<<、operator>>、peek( )、ignore( )、getline( )、get( )等。

在程序中,要使用一个文件,必须包含3个基本步骤:打开(open)文件——操作文件——关闭(close)文件。

C语言读写文件两种方式ASCII和二进制。

C语言读写文件两种方式ASCII和二进制。

C语⾔读写⽂件两种⽅式ASCII和⼆进制。

C语⾔读写⽂件有两种⽅式ASCII 和⼆进制。

现在举例说明:内存中的字符或字符串都是⽂本模式(unicode编码存储,统⼀长度,定长码,⽅便)内存中的其他变量都是以⼆进制编码存储程序的代码以⽂本模式ASCII码⽅式存储1.在windows系统中,⽂本模式下,⽂件以" \r\n"代表换⾏。

若以⽂本模式打开⽂件,并⽤fputs等函数写⼊换⾏符"\n"时,函数会⾃动在"\n"前⾯加上"\r"。

即实际写⼊⽂件的是"\r\n" 。

读取的时候⾃动去掉\r,将\n写⼊内存。

2.在类Unix/Linux系统中⽂本模式下,⽂件以"\n"代表换⾏。

所以Linux系统中在⽂本模式和⼆进制模式下并⽆区别。

注:Windows 采⽤ \r\n 是有原因的,Windows 采⽤了传统的英⽂打字机的模式。

想想看英⽂打字机是如何换⾏的呢?英⽂打字机是选择将⼩车退回⾄起点,这个过程称为回车(carriage return, CR),随后把⼩车调⾄下⼀⾏的位置,这个过程称为换⾏(line feed, LF),这样就完成了英⽂打字机中换⾏过程。

回车(CR)在计算机中使⽤ ASCII 为 13 的字符来表⽰,换⾏(LF)使⽤ASCII 为 10 的字符来表⽰。

这也就是 Windows 的换⾏采⽤ \r\n 来表⽰的原因。

3.当⽤⼆进制模式读取windows下代表换⾏的\r\n时,不能⾃动去掉\r,这样读⼊内存的数据多了⼀个‘\r’,造成跟在‘\r’后⾯的⼆进制位右移,读取必然会出错!4.如果在⽂件中读到0x1B,⽂本模式会认为这是⽂件结束符,也就是⼆进制模型不会对⽂件进⾏处理,⽽⽂本⽅式会按⼀定的⽅式对数据作相应的转换。

5.⽤⽂本模式写⽂件,读取时也要⽤⽂本模式,⼆进制模式同样。

简述c语言对文件进行读写操作的基本步骤

简述c语言对文件进行读写操作的基本步骤

简述c语言对文件进行读写操作的基本步骤C语言对文件进行读写操作的基本步骤如下:
1. 打开文件:使用fopen函数打开需要读写的文件,返回文件指
针指向该文件。

2. 读写文件:读文件使用fread函数,写文件使用fwrite函数,通过文件指针和缓冲区来实现读写。

3. 关闭文件:使用fclose函数关闭已经读写完毕的文件,并且
释放文件指针所占用的内存。

在具体实现时,需要注意文件打开方式、读写模式和读写的字节
数等相关细节。

同时还需要处理异常情况,如文件打开失败、读写文
件时发生错误等。

C++中Txt文件读取和写入

C++中Txt文件读取和写入
ios::app 添加到文件尾 ios::ate 把文件标志放在末尾而非起始。 ios::trunc 默认. 截断并覆写文件。 ios::nocreate 文件不存在也不创建。 ios::noreplace 文件存在则失败。
文件状态 我用过的唯一一个状态函数是 eof(), 它返回是否标志已经到了文件末尾。 我主要用在循பைடு நூலகம்中。 例如, 这个代码断统计小写‘e’ 在文件中出现的次数。
This is really awesome! 如果你想把整行读入一个 char 数组, 我们没办法用">>"?操作符,因为 每个单词之间的空格(空白字符)会中止文件的读取。为了验证:
char sentence[101]; fin >> sentence; 我们想包含整个句子, "This is really awesome!" 但是因 为空白, 现在它只包含了"This". 很明显, 肯定有读取整行的方法, 它就是 getline()。这就是我们 要做的。
fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件.
ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例 子。
int num = 150; char name[] = "John Doe"; fout << "Here is a number: " << num << "/n"; fout << "Now here is a string: " << name << "/n"; 现在保存文件,你必须关闭文件,或者回写 文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它 会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。 回写看起来像另一次输出, 然后调用方法关闭。像这样:

C语言程序设计 第9章 文件

C语言程序设计 第9章  文件

9.3 文件的顺序读写
❖ 【例9.4】fputs函数和fgets函数的使用。
9.3 文件的顺序读写
❖ 9.3.3 fprintf函数和fscanf函数 ❖ fprintf与fscanf函数为格式读写函数,与printf、scanf类似,fprintf与
fscanf用于从文件中读取指定格式的数据和把指定格式的数据写入文件,这 是按数据格式要求进行文件的输入/输出。其一般形式为: ❖ fscanf(fp,format,args); ❖ fprintf(fp,format,args); ❖ 其中,fp为文件指针,format为格式控制字符串,args为输入或输出的地 址列表。 ❖ 例如,若文件指针fp已指向一个已打开的文件文本,a、b分别为整型变量 ,则以下语句从fp所指向的文件中读入两个整数放入变量a和b中。 ❖ fscanf(fp,”%d%d”,&a,&b); ❖ 又如,若文件指针fp已指向一个已打开的文件文本,x、y分别为整型变量 ,则以下语句将x、y中的数据按%d的格式输出到fp所指向的文件中。 ❖ fprintf(fp,"%d%d",&a,&b);
本章小结
❖ 本章主要介绍了以下内容。 ❖ (1)文件的概念 ❖ 介绍了文件及文件指针的基本概念,以及文件的打开与关闭
函数fopen、fclose等。 ❖ (2)文件的顺序读写 ❖ 主要介绍了从文件中输出字符、字符串,以及将字符、字符
串写入文件的函数。 ❖ (3)随机文件的读写及错误检测 ❖ 主要介绍了随机文件读写的应用,以及文件的出错检测。
❖ 在实际读写文件中,人们常常希望能直接读到某一数据 项而不是按物理位置顺序逐个读下来。这种可以任意指 定读写位置的操作称为文件的随机读写。可以想象,只 要能移动位置指针到所需要的地方,实现文件的定位, 就能实现随机读写。

C#处理文本文件TXT实例详解(转)

C#处理文本文件TXT实例详解(转)

C#处理⽂本⽂件TXT实例详解(转)作者:安静平和字体:[ ] 类型:转载时间:2015-02-02这篇⽂章主要介绍了C#处理⽂本⽂件TXT的⽅法,以实例形式详细分析了txt⽂本⽂件的读取、修改及打印等功能的实现技巧,需要的朋友可以参考下本⽂实例讲述了C#处理⽂本⽂件TXT的⽅法。

分享给⼤家供⼤家参考。

具体分析如下:1. 如何读取⽂本⽂件内容:这⾥介绍的程序中,是把读取的⽂本⽂件,⽤⼀个richTextBox组件显⽰出来。

要读取⽂本⽂件,必须使⽤到"StreamReader"类,这个类是由名字空间"System.IO"中定义的。

通过"StreamReader"类的"ReadLine()"⽅法,就可以读取打开数据流当前⾏的数据了。

下⾯代码实现的功能就是读取"C:\file.txt"并在richTextBox1组件中显⽰出来:FileStreamfs=newFileStream("C:\\file.txt",FileMode.Open,FileAccess.Read);StreamReaderm_streamReader=newStreamReader(fs);//使⽤StreamReader类来读取⽂件m_streamReader.BaseStream.Seek(0,SeekOrigin.Begin);//从数据流中读取每⼀⾏,直到⽂件的最后⼀⾏,并在richTextBox1中显⽰出内容this.richTextBox1.Text="";stringstrLine=m_streamReader.ReadLine();while(strLine!=null){this.richTextBox1.Text+=strLine+"\n";strLine=m_streamReader.ReadLine();}//关闭此StreamReader对象m_streamReader.Close();2. 如何改变⽂本⽂件中数据内容:下⾯的程序中,改变⽂本⽂件数据内容的功能是通过改变richTextBox1中的内容来实现的,当richTextBox1这的内容改变后,按动"另存为",就把richTextBox1中内容存储到指定的⽂本⽂件中了。

C语言程序设计第10章文件及其应用


学一学
1.定义文件指针 一般形式为: FILE * fp; 其中fp就是所定义文件指针。 FILE类型 以及所有的文件读写函数和相关常量都定 义在文件stdio.h中,在源程序的开头要 包含头文件 stdio.h 。
学一学
2.打开文件 C语言中,使用fopen函数来打开文件。打开文件是使 一个文件指针变量指向被打开文件的结构变量,以便通 过该指针变量访问打开的文件。fopen函数的调用形式 如下: fopen(chFileName,mode); 以mode 方式打开文件chFileName。其中,参数 chFileName 是将要读写文件的文件名,mode为文件 的操作方式。若文件打开成功,返回一个文件指针,若 打开失败,则返回空值NULL,NULL在stdio.h中被定 义为0。文件操作方式mode是一个整数,其取值及含 义如表10-1所示。

流程图
开始 定义文件指针fp,定义整型数组 iArray[5],定义循环变量i 以写二进制文件方式打开文件 fp=fopen("test.dat","wb") N i=0
fp==NULL Y
i<5 Y 输入1个整数存入 数组元素iArray[i]
N
i++
把数组iArray中5 个整数写入文件
显示出错信息 关闭文件 exit(0)
试一试
问题10.1编一程序从键盘输入一串字符“may friendship forever! ”,然后保存在文件myInfo.txt中。 【解题步骤】 1.定义文件指针fp; 2.定义字符数组chInfo用来存输入的字符串; 3.以写文本文件方式打开文件myInfo.txt; 4.如果打开文件失败,则输出错误信息并结束程序; 5.否则,打开文件成功,则从键盘输入数据; 5.将字符数组chInfo中的字符写入文件myInfo.txt; 6.关闭文件。

c语言文件读写

c语言文件读写从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。

ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。

ASCII码文件可在屏幕上按字符显示。

二进制文件是按二进制的编码方式来存放文件的。

二进制文件虽然也可在屏幕上显示,但其内容无法读懂。

C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。

输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。

因此也把这种文件称作“流式文件”。

1、文件的打开与关闭文件在进行读写操作之前要先打开,使用完毕要关闭。

所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。

关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。

在C语言中,文件操作都是由库函数来完成的。

在本章内将介绍主要的文件操作函数。

在stdio.h文件中,有结构体类型FILE。

typeof struct{ short level; /*缓冲区“满”或“空”的程度*/unsigned flags; /*文件状态标志*/char fd; /*文件描述符*/unsigned char hold; /*如无缓冲区不读取字符*/short bsize; /*缓冲区的大小*/unsigned char *buffer; /*数据缓冲区的位置*/unsigned ar *curp; /*指针、当前的指向*/unsigned istemp; /*临时文件、指示器*/short token; /*用于有效性检查*/} FILE;可以定义文件类型数组,例如:FILE f[5];可以定义文件类型指针,例如:FILE *fp;——fp指向某一个文件的结构体变量。

如果有n个文件,一般应设n个指针变量,使它们分别指向n个文件,以实现对文件的访问。

1.1 文件的打开(fopen函数)fopen()函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);其中,“文件指针名”必须是被说明为FILE 类型的指针变量;“文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求;“文件名”是字符串常量或字符串数组。

c语言文件读写操作原理

c语言文件读写操作原理
数据流
就C程序而言,从程序移进,移出字节,这种字节流就叫做流。

程序与数据的交互是以流的形式进行的。

进行C语言文件的读写时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。

缓冲区
在程序执行时,所提供的额外内存,可用来暂时存放准备执行的数据。

它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。

当使用标准I/O函数(包含在头文件stdio.h中)时,系统会自动设置缓冲区,并通过数据流来读写文件。

当进行文件读取时,是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据。

事实上,当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘。

文件类型
文本文件和二进制文件:
文本文件是以字符编码的方式进行保存的。

二进制文件将内存中的数据原封不动的进行保存,适用于非字符为主的数据。

其实,所有的数据都可以算是二进制文件。

二进制文件的优点在于存取速度快,占用空间小。

文件存取方式
顺序存取方式和随机存取方式:
顺序存取就是从上往下,一笔一笔读取文件的内容。

写入数据时,将数据附加在文件的末尾。

这种存取方式常用于文本文件。

随机存取方式多半以二进制文件为主。

它会以一个完整的单位来进行数据的读取和写入,通常以结构为单位。

CC++读写文本文件、二进制文件的方法

CC++读写⽂本⽂件、⼆进制⽂件的⽅法⼀:⽬的掌握C语⾔⽂本⽂件读写⽅式;掌握C语⾔⼆进制⽂件读写⽅式;掌握CPP⽂本⽂件读写⽅式;掌握CPP⼆进制⽂件读写⽅式;⼆:C语⾔⽂本⽂件读写1. ⽂本⽂件写⼊//采⽤C模式对Txt进⾏写出void TxtWrite_Cmode(){//准备数据int index[50] ;double x_pos[50], y_pos[50];for(int i = 0; i < 50; i ++ ){index[i] = i;x_pos[i] = rand()%1000 * 0.01 ;y_pos[i] = rand()%2000 * 0.01;}//写出txtFILE * fid = fopen("txt_out.txt","w");if(fid == NULL){printf("写出⽂件失败!\n");return;}for(int i = 0; i < 50; i ++ ){fprintf(fid,"%03d\t%4.6lf\t%4.6lf\n",index[i],x_pos[i],y_pos[i]);}fclose(fid);}2. ⽂本⽂件读取//采⽤C模式对Txt进⾏读取void TxtRead_Cmode(){FILE * fid = fopen("txt_out.txt","r");if(fid == NULL){printf("打开%s失败","txt_out.txt");return;}vector<int> index;vector<double> x_pos;vector<double> y_pos;int mode = 1;printf("mode为1,按字符读⼊并输出;mode为2,按⾏读⼊输出;mode为3,知道数据格式,按⾏读⼊并输出\n");scanf("%d",&mode);if(mode == 1){//按字符读⼊并直接输出char ch; //读取的字符,判断准则为ch不等于结束符EOF(end of file)while(EOF!=(ch= fgetc(fid)))printf("%c", ch);}else if(mode == 2){char line[1024];memset(line,0,1024);while(!feof(fid)){fgets(line,1024,fid);printf("%s\n", line); //输出}}else if(mode == 3){//知道数据格式,按⾏读⼊并存储输出int index_tmp;double x_tmp, y_tmp;while(!feof(fid)){fscanf(fid,"%d%lf%lf\n",&index_tmp, &x_tmp, &y_tmp);index.push_back(index_tmp);x_pos.push_back(x_tmp);y_pos.push_back(y_tmp);}for(int i = 0; i < index.size(); i++)printf("%04d\t%4.8lf\t%4.8lf\n",index[i], x_pos[i], y_pos[i]);}fclose(fid);}三:C语⾔⼆进制⽂件读写1. ⼆进制⽂件写⼊//采⽤C模式写⼆进制⽂件void DataWrite_CMode(){//准备数据double pos[200];for(int i = 0; i < 200; i ++ )pos[i] = i ;//写出数据FILE *fid;fid = fopen("binary.dat","wb");if(fid == NULL){printf("写出⽂件出错");return;}int mode = 1;printf("mode为1,逐个写⼊;mode为2,逐⾏写⼊\n");scanf("%d",&mode);if(1==mode){for(int i = 0; i < 200; i++)fwrite(&pos[i],sizeof(double),1,fid);}else if(2 == mode){fwrite(pos, sizeof(double), 200, fid);}fclose(fid);}2.⼆进制⽂件读取//采⽤C模式读⼆进制⽂件void DataRead_CMode(){FILE *fid;fid = fopen("binary.dat","rb");if(fid == NULL){printf("读取⽂件出错");return;}int mode = 1;printf("mode为1,知道pos有多少个;mode为2,不知道pos有多少个\n"); scanf("%d",&mode);if(1 == mode){double pos[200];fread(pos,sizeof(double),200,fid);for(int i = 0; i < 200; i++)printf("%lf\n", pos[i]);free(pos);}else if(2 == mode){//获取⽂件⼤⼩fseek (fid , 0 , SEEK_END);long lSize = ftell (fid);rewind (fid);//开辟存储空间int num = lSize/sizeof(double);double *pos = (double*) malloc (sizeof(double)*num);if (pos == NULL){printf("开辟空间出错");return;}fread(pos,sizeof(double),num,fid);for(int i = 0; i < num; i++)printf("%lf\n", pos[i]);free(pos); //释放内存}fclose(fid);}四:C++⽂本⽂件读写1. ⽂本⽂件写⼊//采⽤CPP模式写txtvoid TxtWrite_CPPmode(){//准备数据int index[50] ;double x_pos[50], y_pos[50];for(int i = 0; i < 50; i ++ ){index[i] = i;x_pos[i] = rand()%1000 * 0.01 ;y_pos[i] = rand()%2000 * 0.01;}//写出txtfstream f("txt_out.txt", ios::out);if(f.bad()){cout << "打开⽂件出错" << endl;return;}for(int i = 0; i < 50; i++)f << setw(5) << index[i] << "\t" << setw(10) << x_pos[i] <<"\t" <<setw(10)<< y_pos[i] << endl;f.close();}2.⽂本⽂件读取//采⽤CPP模式读取txtvoid TextRead_CPPmode(){fstream f;f.open("txt_out.txt",ios::in);//⽂件打开⽅式选项:// ios::in = 0x01, //供读,⽂件不存在则创建(ifstream默认的打开⽅式)// ios::out = 0x02, //供写,⽂件不存在则创建,若⽂件已存在则清空原内容(ofstream默认的打开⽅式)// ios::ate = 0x04, //⽂件打开时,指针在⽂件最后。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档