第15章 输入输出流和文件流

合集下载

实验6 标准设备与文件流的输入输出

实验6 标准设备与文件流的输入输出

实验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语言中的输入输出流及其应用

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语言还支持文件流,用于读写文件。

文件流的操作需要使用文件指针,并且需要注意文件的打开和关闭。

第15章-系统分析

第15章-系统分析

MIS
入库业务流程图
采购员 (1)采购员交材料入库单; (1)采购员交材料入库单; 采购员交材料入库单 (2)库工查定货单,核实 (2)库工查定货单, 入库单; 入库单; 入库单 (3)材料入库,库工验收; (3)材料入库,库工验收; 订货单文件 复核 库工 (4) (4)库工填写交库单给采 购员, 购员,并把入库单存入文 件柜留底。 件柜留底。
交库单
合法入 库单
入库文件
材料入库验收
库工
MIS
材料出库业务的具体工作步骤为: 2. 材料出库业务的具体工作步骤为: (1)由领料人填写领料单; (1)由领料人填写领料单; (2)库工接收并复核领料单; (2)库工接收并复核领料单; (3)库工取出所领材料,发给领料人; (3)库工取出所领材料,发给领料人; (4)库工开发料单给领料人, (4)库工开发料单给领料人,并把领料单 存入文件柜留底。 存入文件柜留底。
MIS
组织结构调查分析 组织机构图: 组织机构图:
MIS
组织功能调查分析
1.功能(即业务过程 功能 即业务过程 即业务过程) 功能指的是完成某项工作的能力。 功能指的是完成某项工作的能力。为了实现系统目 系统必须具有各种功能。 标,系统必须具有各种功能。 各子系统功能的完成, 各子系统功能的完成,又依赖于下面更具体的工作 (业务流程 业务活动 的完成。 业务流程/业务活动 的完成。 业务流程 业务活动)的完成 2.组织功能描述工具 组织功能描述工具 业务功能一览表是一个完全以业务功能为主体的树 型表。 型表。 其目的在于描述组织内部各部分的功能。 其目的在于描述组织内部各部分的功能。
2.方法 方法
收集原系统全部输入单据(如入库单、收据、凭证)、输 收集原系统全部输入单据(如入库单、收据、凭证)、输 )、 出报表和数据存储介质(如账本、清单)的典型格式。 出报表和数据存储介质(如账本、清单)的典型格式。 通过对单据的分析,了解系统各业务的输入数据 输入数据、 通过对单据的分析,了解系统各业务的输入数据、处理过 输出数据以及数据存储。 以及数据存储 程、输出数据以及数据存储。 在上述各种单据、报表、账册的典型样品上注明各项数据 在上述各种单据、报表、账册的典型样品上注明各项数据 的类型(数字、字符)、长度、取值范围( )、长度 的类型(数字、字符)、长度、取值范围(指最大值和最 小值)。 小值)。

Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。

Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。

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语言中,我们可以通过文件操作来读取和写入文件,以及对文件进行各种处理。

同时,输入输出流处理也可以让我们方便地与外部文件进行交互,实现数据的输入输出。

在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 标准输入输出设备文件和流

拓展知识9-1 标准输入输出设备文件和流

拓展知识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语言是一种广泛应用于系统编程和嵌入式开发的高级编程语言,它提供了丰富的文件操作和输入输出流控制的功能,使得程序能够与外部环境进行数据的交互和存储。

本文将介绍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是格式控制字符串,...是要写入的变量。

输入输出流

输入输出流
*/
public class Files
{
public static void main(String[] args) throws IOException
{
Files f = new Files();
// System.out.println(f.readFile("f:\\LinkFile.java"));
}
}
}
/**
* 检查文件中是否为一个空
* @param filePath
* @param fileName
* @return 为空返回true
* @throws IOException
*/
public boolean fileIsNull(String filePath,String fileName) throws IOException
for(int i=0;i<ss.length;i++)
{
ss[i] = "信息技术和互联网(计算机软硬件,通讯) "+i;
}
f.writeFile("f:\\ss\\","TestFile.txt",ss);
}
/**
* 文件的写入
* @param filePath(文件路径)
/**
* @author zhangqinglin
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//创建输出文件流对象
//设置每个数字 10 个字节宽 //每 5 个数字一行
//关闭文件流
读取文件可以使用ifstream类型的对象,其格式为:
const char * pFile = “data.txt”;
ifstream infile(pFile);
//对象与文件关联
1、调用ifstream对象的成员函数is_open(),如果文件已经 打开,返回true,否则返回false。
int value; cin>>value;
15a↙ A15↙
//只读取有效数据 1 和 5,最后将 1 和 5 转换为整数类型 15 //由于 A 不是有效数据,那么提取操作符将不会提取数据
在C++中,有3种流类对象可以用来处理文件: ifstream、ofstream以及fstream。
首先需要创建ofstream类的对象,其格式如下:
2、读取ios类中的fail()的返回值,如果文件发生错误,该 函数就返回true。
3、对流对象进行!运算符操作,可以用来检测在该类中定义 的流状态指示符。该方法等价于使用fail()函数。
strstream文件中包含如下类:strstreambuf、istrstream、 ostrstream、strstream
//显示 16 进制基数表示
//显示字符数组中的内容 //释放内存空间
strstream文件中包含如下类:istringstream、ostringstream、 stringbuf、stringstream
01 #include<iostream>
02 #include<sstream>
03 using namespace std;
ofstream file(“filename”);
//创建写入文件对象
01 ofstream ofile(".\\data.txt");
02
for(int i=1;i<=10;i++)
03
{
04
ofile<<s etw(10)<<i;
05
if(i%5==0)
06
ofile<<endl;
07
}
08
ofile.clos e();
cout.put('\n');
08
cout.write(ps tr,5);
09
cout.write(ps tr+5,6);
10
cout<<endl;
11
cout.write("happy" , 5);
12 13 }
cout<<endl;
编译、运行上述程序得到如下结果:
Am F Hello world
01 #include<iostream>
02 #include<strstream>
03 using namespace std;
04 int main()
05 {
06
int arraylen = 100;
07
char *parray = new char[arraylen];
08
ostrstream ostr(parray, arraylen , ios::out);
利用ostream提供的方法,打印输出数据。
01 #include<iostream> 02 using namespace std;
03 void main()
04 {
05
char *pstr = "Hello world";
06
cout.put('A').put('m ').put(70);
07
//实现基本数据的写入 }
要想实现从流中读取对象,只需要重载 operator>>()函数即可。
istream& operator>>(istream& in , student& stu); {
in>>s tu.nam e>>stu.grade >>stu.age>>stu.s ex; }
输入和输出流 文件流 字符串流 对象和流
C++专门设计实现、管理流的类,这些类主要包 含在iostream文件中。
标准输出流cout(或是wcout)在iostream文件中的定义如下:
extern ostream cout; //或者 extern wostream wcout;
//定义窄字节流对象 //定义宽字节流对象
happy
//定义字符串指针,并初始化 //利用 put()函数输出字符 //换行 //输出字符串
//输出字符串
标准输入流在iostream文件中的定义如下:
extern istream cin; extern wistream wcin
//定义窄字节流对象 //定义宽字节流对象
cin>>value;
12
s s tr>>a;
//提取流中的数据
13
s s tr>>d;
14
cout<<"a = "<<a<<"\t"
15
<<"d = "<<d<<endl;
16
return 0;
17 }
想要实现将对象写入流中,只需要实现重载 operator<<()运算符
ostream& operator<<(ostream &out , const classname & name) {
04 int main()
05 { 06 07
stringstream sstr; double d = 10.5;
//定义字符串流对象 //定义浮点类型变量
08
int a = 100;
09
sstr<<d<<" ";
//将数据写入流中
10
sstr<<a<<" ";
//将数据写入流中
11
cout<<sstr.str().c_str()<<endl; //将流中的数据打印输出
09
ostr<<"hello"<<" ";
10
ostr<<50.5<<" ";
11
os tr.s etf(ios ::s howbase);
12
os tr<<hex<<100<<ends ;
13
ቤተ መጻሕፍቲ ባይዱ
cout<<parray<<endl;
14
delete []parray;
15
return 0;
16 }
//动态申请内存空间 //定义输出流的对象 //将数据写入输出流
相关文档
最新文档