第15章 输入输出流和文件流
- 格式:pptx
- 大小:226.23 KB
- 文档页数:12
实验6.1实验目的1.掌握文件流的打开、关闭及使用的使用方法2.理解文本文件流与二进制文件流在操作上的区别 6.2实验内容与步骤1.上机实验题一设计一个管理图书目的简单程序,提供的基本功能包括:可连续将新书存入文件“book.dat”中,新书信息加入到文件的尾部;也可以根据输入的书名进行查找;把文件“book.dat”中同书名的所有书显示出来。
为简单起见,描述一本书的信息包括:书号,书名,出版社和作者。
⑴分析 可以把描述一本书的信息定义为一个Book 类,它包含必要的成员函数。
把加入的新书总是加入到文件尾部,所以,以增补方式打开输出文件。
从文件中查找书时,总是从文件开始位置查找,以读方式打开文件。
用一个循环语句实现可连续地将新书加入文件或从文件中查找指定的书名。
由于是以一个Book 类的实例进行文件输入输出的,所以,这文件的类型应该是二进制文件。
简化的参考程序如下:#include <iostream.h> #include <string.h> #include <fstream.h> class Book { long int num;//书号 char bookname[40]; //书名 char publicname[40]; //出版社 char name[20];//作者public: Book() { num=0; bookname[0] =0;publicname[0] =0; name[0] =0;} char * Getbookname(void) { return bookname ;} long Getnum(void ) { return num;}void Setdata(long , char *,char *,char *);void Show(void );Book(long , char *,char *,char *);};void Book::Setdata(long nu , char *bn,char *p,char *n){num = nu; strcpy(bookname,bn);strcpy(publicname,p); strcpy(name,n);}void Book::Show(void ){cout<<"书号:"<<num<<'\t'<<"书名:"<<bookname<<'\t';cout<<"出版社:"<<publicname<<'\t'<<"作者:"<<name<<'\n';}Book::Book(long nu, char * bp,char *p,char *n){ Setdata(nu , bp, p, n); }void main(void){Book b1,b2;long nu;char bn[40]; //书名char pn[40]; //出版社char na[20]; //作者ifstream file1;ofstream file3;char flag = 'y';while( flag=='y' ||flag=='Y') { //由flag控制循环cout<<"\t\t 1: 按书名查找一本书!\n";cout<<"\t\t 2: 加入一本新书!\n";cout<<"\t\t 3: 退出!\n输入选择:";int f;cin>>f;switch(f){case 1:cout<<"输入要查找的书名:"; cin>>bn;file1.open("book.dat",ios::in | ios::binary);//按读方式打开文件while(!file1.eof() ){int n;file1.read((char *)&b1,sizeof(Book));实验n=file1.gcount(); if(n==sizeof(Book)){ if(strcmp(b1.Getbookname(),bn)==0) //显示书的信息 b1.Show(); } }file1.close();break; case 2: cout<<"输入书号:"; cin>>nu; cout<<"输入书名:"; cin>>bn; cout<<"输入出版社:"; cin>>pn; cout<<"输入作者:"; cin>>na;b1.Setdata(nu,bn,pn,na);file3.open("book.dat",ios::app|ios::binary);//增补方式打开文件file3.write((char*)&b1,sizeof(b1)); file3.close(); break;default: flag = 'n';} } }⑵上机要求修改程序增加按出版社、作者。
C语言中的输入输出流及其应用C语言是一种广泛应用于软件开发领域的编程语言,其提供了丰富的输入输出(I/O)函数和流(stream)的概念,以帮助开发者实现与用户或环境的交互。
本文将详细介绍C语言中的输入输出流及其应用。
一、输入流输入流用于接收外部数据供程序使用。
C语言提供了丰富的输入函数,包括:1. scanf函数:scanf函数用于从标准输入流(键盘)读取数据,并根据格式化字符串的指定将数据存储到指定的变量中。
例如:```cint age;scanf("%d", &age);```上述代码将从标准输入流读取一个整数,并将其存储到变量age中。
2. fgets函数:fgets函数用于从文件流或标准输入流中读取一行字符串并存储到指定的字符数组中。
例如:```cchar name[100];fgets(name, sizeof(name), stdin);```上述代码将从标准输入流读取一行字符串,并将其存储到字符数组name中。
二、输出流输出流用于向外部输出数据。
C语言提供了多种输出函数,包括:1. printf函数:printf函数用于向标准输出流(屏幕)输出格式化的数据。
例如:```cint num = 10;printf("The number is: %d\n", num);```上述代码将输出"The number is: 10"。
2. fputs函数:fputs函数用于向文件流或标准输出流中输出字符串。
例如:```cchar message[] = "Hello, world!";fputs(message, stdout);```上述代码将字符串"Hello, world!"输出到标准输出流。
三、文件流除了标准输入输出流外,C语言还支持文件流,用于读写文件。
文件流的操作需要使用文件指针,并且需要注意文件的打开和关闭。
Java⾃学第10期——File类与IO流(输⼊输出流、处理流、转换流、缓冲流、Prope。
1、IO简介IO(输⼊输出)通过java.io包下的类和接⼝来⽀持,包下包括输⼊、输出两种IO流,每种输⼊输出流⼜可分为字符流和字节流两⼤类。
2、File类File类是io包下与平台⽆关的⽂件和⽬录,File能新建、删除、重命名⽂件和⽬录,不能访问⽂件本⾝,后者需要使⽤输⼊输⼊流。
2.1 构造⽅法File类的构造⽅法:File(File parent, String child) 参数:⽗路径,⼦路径根据 parent 抽象路径名和 child 路径名字符串创建⼀个新 File 实例。
File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建⼀个新 File 实例。
File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建⼀个新 File 实例。
File(URI uri)通过将给定的 file: URI 转换为⼀个抽象路径名来创建⼀个新的 File 实例。
2.2 静态⽅法File类静态⽅法:static String pathSeparator()与系统有关的路径分隔符,为了⽅便,它被表⽰为⼀个字符串。
static char pathSeparatorChar()与系统有关的路径分隔符。
static String separator()与系统有关的默认名称分隔符,为了⽅便,它被表⽰为⼀个字符串。
static char separatorChar()与系统有关的默认名称分隔符。
2.3 常⽤⽅法:2.3.1 获取相关public String getAbsolutePath()返回此File的绝对路径名字符串。
public String getPath()将此File转换为路径名字符串。
public String getName()返回由此File表⽰的⽂件或⽬录的名称。
C语言中的文件操作与输入输出流处理C语言是一种广泛使用的编程语言,而文件操作与输入输出流处理是C语言中非常重要的一部分。
在C语言中,我们可以通过文件操作来读取和写入文件,以及对文件进行各种处理。
同时,输入输出流处理也可以让我们方便地与外部文件进行交互,实现数据的输入输出。
在C语言中,文件操作主要涉及到文件的打开、关闭、读取和写入等操作。
下面我们来具体了解一下C语言中文件操作的一些常用函数:1. fopen函数:用于打开一个文件,语法为:FILE *fopen(const char *filename, const char *mode);其中,filename为文件名,mode为打开文件的模式,有"r"(只读)、"w"(写)、"a"(追加)等不同模式。
2. fclose函数:用于关闭一个打开的文件,语法为:int fclose(FILE *stream);其中,stream为打开文件所返回的指针。
3. fgetc和fputc函数:分别用于读取和写入单个字符,语法为:int fgetc(FILE *stream)和int fputc(int c, FILE *stream)。
4. fgets和fputs函数:分别用于读取和写入一行字符,语法为:char *fgets(char *str, int n, FILE *stream)和int fputs(const char *str, FILE *stream)。
5. fprintf函数:用于向文件中格式化输出数据,语法为:int fprintf(FILE*stream, const char *format, ...);其中,format为输出格式。
C语言中的输入输出流处理则是通过标准输入输出流来实现的。
通过标准输入输出流,我们可以方便地进行终端输入输出,或与外部文件进行数据交互。
下面是C语言中一些常用的输入输出流处理函数:1. scanf函数:用于从终端输入数据,语法为:int scanf(const char *format, ...);其中,format为输入格式。
拓展知识9-1 标准I/O设备文件和流C程序中经常有大量对文件的输入输出操作,它构成了程序的重要部分,因而C语言提供了很多输入输出的函数,用于两种类型文件输入输出系统:即由ANSI标准定义的缓冲文件系统(也称标准文件(流)输入输出(I/O)系统);另一类是ANSI标准中没有定义的非缓冲文件系统(也称非标准文件(流)输入输出(I/O)系统)。
我们已经熟悉了通过键盘和显示器进行输入输出的一些函数,如scanf,printf 等等,这些通过控制台(键盘、显示器等)进行I/O的操作,可以看作标准文件输入输出系统的一些特例。
任何C程序执行时,系统都定义了5个标准设备文件供使用。
系统自动打开的5个标准设备文件为:键盘(标准输入)stdin 0显示器(标准输出)stdout 1显示器(标准错误)stderr 2串行口(标准辅助)stdoux 3打印机(标准打印)stdprn 4在C中可将数据的输入输出看作是数据的流入和流出,这样不管是普通(磁盘)文件或者是物理设备(打印机、显示器、键盘等),都可看作一种流的源和目的,视他们为同一种东西,而不管其具体的物理结构,即对他们的操作,就是数据的流入和流出。
这种把数据的输入输出操作,抽象化为一种流,而不管它的具体结构的方法很有利于编程,而涉及流的输入输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。
在C语言中流可分为两大类,即文本流(text stream)和二进制流(binary stream)。
所谓文本流是指在流中流动的数据是以字符形式出现。
在文本流中,'\n'被换成回车CR和换行LF的代码0DH和0AH。
而当输出时,则0DH和0AH被换成'\n'。
二进制流是指流动的是二进制数字序列,若流中有字符,则用一个字节的二进制ASCII码表示,若是数字,则用一个字节的二进制数表示。
在流入流出时,对\n符号不进行变换。
【示例】2001这个数,在文本流中用其ASCII码表示为:50 48 48 49共占4字节。
C语言的文件操作与输入输出流控制C语言是一种广泛应用于系统编程和嵌入式开发的高级编程语言,它提供了丰富的文件操作和输入输出流控制的功能,使得程序能够与外部环境进行数据的交互和存储。
本文将介绍C语言中文件操作和输入输出流控制的相关知识。
一、文件操作在C语言中,文件是指计算机中存储数据的一种资源,可以是文本文件、二进制文件等。
文件操作是指对文件进行读取、写入、打开、关闭等操作。
1. 文件的打开与关闭在C语言中,使用文件指针来操作文件。
文件指针是一个指向文件的指针变量,通过它可以对文件进行读写操作。
文件的打开使用fopen函数,语法如下:FILE *fopen(const char *filename, const char *mode);其中,filename是文件名,mode是打开模式。
常见的打开模式有:- "r":只读模式,打开一个已存在的文本文件。
- "w":写入模式,打开一个文本文件,如果文件不存在则创建,如果文件存在则清空文件内容。
- "a":追加模式,打开一个文本文件,如果文件不存在则创建,如果文件存在则在文件末尾追加内容。
- "rb"、"wb"、"ab":对应的是二进制文件的读写模式。
文件的关闭使用fclose函数:int fclose(FILE *stream);其中,stream是文件指针。
2. 文件的读取与写入文件的读取使用fscanf函数,语法如下:int fscanf(FILE *stream, const char *format, ...);其中,stream是文件指针,format是格式控制字符串,...是要读取的变量。
文件的写入使用fprintf函数,语法如下:int fprintf(FILE *stream, const char *format, ...);其中,stream是文件指针,format是格式控制字符串,...是要写入的变量。
{一、填空题1. _________________________________ 所有字节流类的基类是 、 ( InputStream OutputStream )2. _________________________________ 所有字符流类的基类是 、 ( Reader Writer )3.InputStream 类以 ___________ 为信息的基本单位(字节)4. Reader 类以 ___________ 为信息的基本单位(字符)5. _________ 类用以处理文件和路径问题( File )6. Java 中标准输入输出流对象是: _________________ 、 ____________ 、 __________ (System 」nSystem.out System.err )7.System.in 的类型是 ___________ (InputStream )8.System.out 的类型是 _______________ ( PrinterStream ) 二、选择题1. 以下选项中属于字节流的是( A ) A ) FileInputSream B ) FileWriter C ) FileReader D ) PrintWriter2. 以下选项中不属于 File 类能够实现的功能的是( D )A )建立文件B )建立目录C )获取文件属性D )读取文件内容3. 以下选项中哪个类是所有输入字节流的基类( A )A ) InputStreamB ) OutputStreamC ) ReaderD ) Writer 4. 以下选项中哪个类是所有输出字符流的基类(D )A ) InputStreamB ) OutputStreamC ) ReaderD ) Writer5. 下列选项中能独立完成外部文件数据读取操作的流类是( B ) A ) InputStream B ) FileInputStreamC ) FilterInputStreamD ) DataInputStream6. 下列选项中能独立完成外部文件数据读取操作的流类是(B )A ) ReaderB ) FileReaderC ) BufferedReaderD ) ReaderInputStream 7. 在建立 FileInputStream 流对象时可能会产生下列哪种类型的异常( B ) A ) ClassNotFoundException B ) FileNotFoundException C ) RuntimeException D ) AWTException8. 在使用 FileInputStream 流对象的 read 方法读取数据时可能会产生下列哪种类型的异常 ( D )A ) ClassNotFoundExceptionB ) FileNotFoundExceptionC ) RuntimeExceptionD ) IOException三、程序设计题 1编写应用程序,使用 System.i n.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组 buffer 中 ,并将用户输入的数据通过System.out.print() 显示在屏幕上。