第10章 C++流与文件操作
- 格式:doc
- 大小:51.50 KB
- 文档页数:7
c程序设计教程与实验课后答案【篇一:c程序设计教程与实验第10章习题参考答案】题1.二进制文本2.rewind()3.字节流式4.”abc.dat” “rb”5.06.将文件位置指针从文本末尾处向文件头的方向移动10个字节7.将文件file1.txt的内容输出到屏幕8.将f1的字符保存到f2中9.rfetc(fp)num++10.fopen(“file.dat”,”wb”)dt,1,9,fp三、程序分析题1. 242.复制f1到f23.1.14.1177995. 65a 66b 67c 68d 69e 70f 71g 72h 75k 76l 77m 78n 79o 80p 81q 82r 85u 86v 87w 88x 89y 90z四、编程题1.#includestdio.h#includestdlib.hint main(){char file[10],file1[10],ch;file *in,*out;scanf(%s,file);scanf(%s,file1);if((in=fopen(file,r))==null){printf(cant open file\n);exit(0);}if((out=fopen(file1,w))==null) 73i 74j 83s 84t {printf(cant open file1\n);exit(0);}while(!feof(in)){ch=fgetc(in);fputc(ch,out);putchar(ch);}fclose(in);fclose(out);return 0;}2.#include stdio.h#includestring.h#include errno.hint main(void){file *fp;char ch;if (null == (fp = fopen(g3, r))){printf(fopen g3 error: %s\n, strerror(errno)); return 0;}while ((ch = fgetc(fp))!=eof){printf(%c, ch); }fclose(fp);printf(\n);return 0;}3.#includestdio.hvoid main(){file *fp; /*定义一个文件指针*/int i;double a[10];if((fp=fopen(data.txt,wb+))==null){printf(file can not open,press any key to exit!\n); getch(); /*从键盘上任意输入一字符,结束程序*/exit(1);}for(i=0;i10;i++)scanf(%lf,a[i]);for(i=0;i10;i++)fwrite(a+i,sizeof(double),1,fp);printf(\n);rewind(fp);fread(a,sizeof(double),10,fp);for(i=0;i10;i++)printf(%f\n,a[i]);printf(\n);fclose(fp);}4.#includestdio.hvoid main(){file *fp;int a[80],i,j;int a,b,c;a=b=c=0;if(fp=fopen(g4.dat,r))==null)printf(读取失败\n);for(i=0;i80;i++){fscanf(fp,%d,a[i]);if(fp==eof)break;}for(j=0;j=i;j++){if(a[i]0) a++;if(a[i]0) b++;if(a[i]==0) c++;}printf(正=%d,负=%d,零=%d\n,a,b,c);5.#includestdio.hstruct student{char num[10];char name[8];int score[2];float ave;} stu[3];void main(){int i,j,sum;file *fp;for(i=0;i3;i++){printf(\ninput score of student %d:\n,i+1);printf(no.:);scanf(%s,stu[i].num);printf(name:);scanf(%s,stu[i].name);sum=0;for(j=0;j2;j++){printf(score %d:,j+1);scanf(%d,stu[i].score[j]);sum+=stu[i].score[j];}stu[i].ave=sum/2.0;}fp=fopen(stud,w);for(i=0;i3;i++)if(fwrite(stu[i],sizeof(struct student),1,fp)!=1) printf(file write error\n);fclose(fp);fp=fopen(stud,r);for(i=0;i3;i++){fread(stu[i],sizeof(struct student),1,fp);printf(\n%s,%s,%d,%d,%d,%6.2f\n,stu[i].num,stu[i].name,stu[i]. score[0], stu[i].score[1],stu[i].score[2],stu[i].ave);}}【篇二:c语言程序设计实训教程习题和实验解答】ss=txt>2.1 c语言概述【习题解答】1结构化程序有三大基本结构:顺序、分支和循环.2..算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。
c程序设计第四版基础C程序设计第四版基础C语言是一种通用的、过程式的编程语言,它具有高效、灵活和功能强大的特点,被广泛应用于系统软件、嵌入式系统和各种应用软件开发中。
《C程序设计》第四版是学习C语言的经典教材,由Brian W. Kernighan和Dennis M. Ritchie合著,后者也是C语言的共同创造者之一。
本书不仅介绍了C语言的基本语法和编程技巧,还涵盖了数据结构、算法和程序设计的基本思想。
第一章:C语言概述本章将介绍C语言的起源、特点和应用领域。
C语言的设计哲学是提供足够的功能来支持各种编程需求,同时保持语言的简洁性。
C语言的发展历程和它在计算机科学中的地位也将在本章进行讨论。
第二章:C语言基础在这一章中,我们将学习C语言的基本语法,包括变量声明、数据类型、运算符和表达式。
此外,还将介绍控制语句,如if语句、switch 语句、while循环和for循环,这些是程序控制流程的基础。
第三章:函数函数是C语言中实现代码复用和模块化的关键。
本章将详细讲解如何定义函数、参数传递、返回值以及函数的调用。
递归函数和作用域的概念也将在本章进行讨论。
第四章:数组和指针数组是存储固定大小元素集合的数据结构,而指针则提供了对内存的直接访问能力。
本章将介绍数组的声明、初始化和遍历,以及指针的基本概念、指针运算和指针与数组的关系。
第五章:结构和联合结构和联合是C语言中创建复杂数据类型的方式。
本章将讲解如何定义和使用结构体和联合体,以及它们在数据组织和程序设计中的应用。
第六章:预处理器C语言的预处理器提供了宏定义、文件包含和条件编译等功能。
本章将介绍预处理器的工作原理和常用指令,以及如何使用它们来提高代码的可读性和可维护性。
第七章:输入和输出本章将讨论C语言中的输入输出操作,包括标准库函数printf和scanf的使用,以及如何实现自定义的输入输出函数。
第八章:动态内存分配动态内存分配是C语言中管理内存的重要特性。
C语言文件操作与输入输出随着计算机科学和编程的不断发展,文件操作和输入输出(I/O)是编程中非常重要的方面之一。
C语言作为一种广泛应用于系统软件和嵌入式开发的高级编程语言,也提供了一系列的函数和库来处理文件操作和输入输出。
本文将介绍C语言中的文件操作以及输入输出的相关知识。
一、文件概念及文件操作1. 文件概念在计算机领域中,文件是用于存储和组织数据的一种重要方式。
可以将文件看作是一种包含了数据的序列,这些数据可以是文本、图像、音频等形式。
在C语言中,文件以字节流的形式进行读取和写入。
2. 文件操作函数C语言提供了丰富的文件操作函数,用于打开、关闭、读取和写入文件。
下面是一些常用的文件操作函数:- fopen():用于打开文件,并返回一个指向该文件的指针。
- fclose():用于关闭文件。
- fgetc():用于从文件中读取一个字符。
- fputc():用于向文件中写入一个字符。
- fgets():用于从文件中读取一行文本。
- fputs():用于向文件中写入一行文本。
- fread():用于从文件中读取一定数量的数据块。
- fwrite():用于向文件中写入一定数量的数据块。
3. 文件打开模式在使用fopen()函数打开文件时,我们需要指定文件的打开模式。
常见的文件打开模式有:- "r":只读模式,用于读取文件的内容。
- "w":写入模式,如果文件不存在则创建文件,如果文件已存在则清空文件内容。
- "a":追加模式,用于向文件末尾追加内容。
- "rb":二进制只读模式,用于读取二进制文件。
- "wb":二进制写入模式,用于写入二进制文件。
二、输入输出(I/O)1. 标准输入输出C语言提供了三个标准的文件指针,它们分别是stdin、stdout和stderr。
它们对应于标准输入、标准输出和标准错误输出。
c程序设计第4版C程序设计第4版C语言是一种通用的、过程式的计算机程序设计语言,广泛用于系统软件与应用软件的开发。
自从1972年由丹尼斯·里奇在贝尔实验室开发以来,C语言已经成为计算机编程领域的基石之一。
随着计算机科学的发展,C语言也在不断地更新和完善,其中《C程序设计》这本书就是学习C语言的重要教材之一。
第1章:C语言概述在第4版中,C语言概述部分会对C语言的历史、特点以及它在现代编程中的地位进行介绍。
C语言以其高效性、灵活性和广泛的应用领域而著称。
本章还会简要介绍C语言的基本语法结构和编程范式。
第2章:C语言基础本章将详细介绍C语言的基本元素,包括数据类型、变量声明、运算符和表达式。
此外,还会讲解控制语句,如if语句、switch语句、循环语句(for、while、do-while)等,这些都是编写C程序时不可或缺的基础。
第3章:函数函数是C语言中实现代码复用的重要手段。
本章将介绍函数的定义、声明、调用以及参数传递机制。
同时,也会探讨递归函数的概念和应用。
第4章:数组和字符串数组是存储固定大小同类型元素的集合,而字符串实际上是字符数组的一种特殊形式。
本章将深入讲解一维数组和多维数组的使用,以及字符串处理函数的应用。
第5章:指针指针是C语言中非常强大的一个特性,它允许程序员直接操作内存地址。
本章将介绍指针的基本概念、指针与数组的关系、指针的算术运算以及函数指针等高级主题。
第6章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的工具。
本章将讲解如何定义和使用结构体、联合体以及枚举类型,以及它们在实际编程中的应用。
第7章:预处理器预处理器是C语言编译过程中的一个阶段,它提供了宏定义、文件包含、条件编译等功能。
本章将详细介绍预处理器的使用方法和技巧。
第8章:文件操作文件操作是程序与外部世界交互的一种方式。
本章将介绍如何在C语言中打开、读取、写入和关闭文件,以及文件指针的概念。
第9章:动态内存分配动态内存分配允许程序在运行时申请和释放内存。
操作系统教程第二版课后答案【篇一:《操作系统教程》(第四版)课后答案】目录第一章第二章第三章第四章第五章第六章第七章第八章操作系统概述处理器管理并发进程存储管理设备管理文件管理操作系统的安全与保护网络和分布式操作系统1 7 26 93 103 108113 115【篇二:操作系统教程(第四版)课后习题答案】1、有一台计算机,具有imb 内存,操作系统占用200kb ,每个用户进程各占200kb 。
如果用户进程等待i/o 的时间为80 % ,若增加1mb 内存,则cpu 的利用率提高多少?答:设每个进程等待i/o 的百分比为p ,则n 个进程同时等待刀o的概率是pn ,当n 个进程同时等待i/o 期间cpu 是空闲的,故cpu 的利用率为1-pn。
由题意可知,除去操作系统,内存还能容纳4 个用户进程,由于每个用户进程等待i/o的时间为80 % , 故:cpu利用率=l-(80%)4 = 0.59若再增加1mb 内存,系统中可同时运行9 个用户进程,此时:cpu 利用率=l-(1-80%)9 = 0.87故增加imb 内存使cpu 的利用率提高了47 % :87 %/59 %=147 %147 %-100 % = 47 %2 一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序a 先开始做,程序b 后开始运行。
程序a 的运行轨迹为:计算50ms 、打印100ms 、再计算50ms 、打印100ms ,结束。
程序b 的运行轨迹为:计算50ms 、输入80ms 、再计算100ms ,结束。
试说明(1 )两道程序运行时,cpu有无空闲等待?若有,在哪段时间内等待?为什么会等待?( 2 )程序a 、b 有无等待cpu 的情况?若有,指出发生等待的时刻。
答:画出两道程序并发执行图如下:(1)两道程序运行期间,cpu存在空闲等待,时间为100 至150ms 之间(见图中有色部分)(2)程序a 无等待现象,但程序b 有等待。
计算机基础作业第一章计算机与信息社会习题 1一、思考题:1.计算机的发展经历了哪几个阶段?各阶段的主要特征是什么?答:计算机经历了电子管、晶体管、中小规模集成电路和大、超大规模集成电路等 4 个阶段。
电子管计算机的特征是:采用电子管作为计算机的逻辑元件,内存储器采用水银延迟线,外存储器采用磁鼓、纸带、卡片等,运算速度只有每秒几千次到几万次基本运算,内存容量只有几千个字节,使用二进制表示的机器语言或汇编语言编写程序。
晶体管计算机的特征是:用晶体管代替了电子管,大量采用磁芯作为内存储器,采用磁盘、磁带等作为外存储器。
采用了中小规模集成电路的计算机的特征是:用集成电路代替了分立元件。
集成电路是把多个电子元器件集中在几平方毫米的基片上形成的逻辑电路。
采用了大、超大规模集成电路的计算机的特征是:以大规模、超大规模集成电路来构成计算机的主要功能部件,主存储器采用集成度很高的半导体存储器,目前计算机的最高速度可以达到每秒几十万亿次浮点运算。
4.计算机主要用于哪些领域?答:计算机主要应用在科学和工程计算、信息和数据处理、过程控制、计算机辅助系统及人工智能等领域。
7.信息技术都包含那些?答:信息技术主要包括信息基础技术、信息系统技术、信息应用技术三个层次。
二、选择题1.最早的计算机是用来进行(A) 的。
A )科学计算B)系统仿真C)自动控制D) 信息处理2.构成第二代计算机的主要电子元件是(B)A )电子管B)晶体管C)中 .小规模集成电路D)超大规模集成电路3.以下哪个不是计算机的特点(D)A )计算机的运行速度快B)计算机的准确度高C)计算机的存储容量巨大D)计算机的体积很小4 办公自动化属于计算机哪项应用(A)A )数据处理B)科学计算C)辅助设计D)人工智能5.以下关于信息的特征不正确的是(B)A )共享性B)不可存储C)可处理性D) 可传递第二章 计算机基础知识 习题 2. 思考题:2.计算机硬件有哪五部分组成?答:计算机由运算器、控制器、存储器、输入装置和输出装置五大部件组成。
第1章操作系统概述1、什么是操作系统?答:控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。
2、操作系统有哪三种类型,他们之间有什么区别?答:单用户单进程、单用户多进程、多用户多进程。
第一个是操作系统在同一时间允许一个用户,同一时间只能运行一个进程。
3、对分时系统,给出一个清晰而准确的描述?答:多个用户分享使用一台JSJ,多个程序分时共享硬件和软件资源。
多路性、独占性、交互性和与时性。
4、目前典型操作系统的主要功能是什么?这些功能的基本用途是什么?答:功能,执行程序,程序的输入和输出操作进程间的通信,错误检测与报告,不同类型的文件操作,用户和安全管理。
5、分别列出字符用户界面和图形用户界面的一个优点和一个缺点?答:CUI执行效率高,外观不美观;GUI 便于使用,缺乏可扩展性。
6、分别列出字符用户界面和图形用户界面有什么不同?目前,在UNIX系统中最流行的图形用户界面是什么?它是由谁开发的?答:CUI通过输入命令来完成相关操作,GUI通过输入设备(如鼠标)来完成相关操作。
7、应用程序程序员接口(API)和应用程序用户接口(AUI)分别包括那些内容?答:AUI通过语言库和系统调用接口与操作系统内核联系在一起,应用软件构成了AUI,系统调用接口由一组为完成特定任务而执行内核代码的函数构成,语言库和系统调用接口构成API。
8、列出UNIX家族中常见的5种操作系统。
你现在使用的是哪一个UNIX系统?答:UNIX版本:AIX、BSD、FreeBSD、LINUX、system V。
第2章UNIX操作系统简史2、如果由你来设计POSIX标准,将包含那些内容?答:支持程序和命令互相兼容,易用性。
3、UNIX系统的前身是什么?UNIX与其前身最初在哪里,由谁开发的?答:前身是MULTICS,由Dennis Ritchie 和Ken Thompson在AT&T中研制。
第3章UNIX起步1、主存的作用是什么?答:主存用来存储正在运行的程序或进程。
C++中输⼊输出流及⽂件流操作总结本⽂实例为⼤家分享了C++中输⼊输出流及⽂件流操作笔记,供⼤家参考,具体内容如下1、流的控制iomanip 在使⽤格式化I/O时应包含此头⽂件。
stdiostream ⽤于混合使⽤C和C + +的I/O机制时,例如想将C程序转变为C++程序2、类继承关系ios是抽象基类,由它派⽣出istream类和ostream类, iostream类⽀持输⼊输出操作,iostream类是从istream类和ostream类通过多重继承⽽派⽣的类类ifstream继承了类istream,类ofstream继承了类ostream,类fstream继承了类iostreamiostream头⽂件中4种流对象cout补充1、⽤“cout<<”输出基本类型的数据时,可以不必考虑数据是什么类型,系统会判断数据的类型并根据其类型选择调⽤与之匹配的运算符重载函数。
这个过程都是⾃动的,⽤户不必⼲预。
如果在C语⾔中⽤prinf函数输出不同类型的数据,必须分别指定相应的输出格式符,⼗分⿇烦,⽽且容易出错2、cout流在内存中对应开辟了⼀个缓冲区,⽤来存放流中的数据,当向cout流插⼈⼀个endl时,不论缓冲区是否已满,都⽴即输出流中所有数据,然后插⼊⼀个换⾏符,并刷新流(清空缓冲区)。
注意如果插⼈⼀个换⾏符”\n“(如cout<<a<<"\n"),则只输出和换⾏,⽽不刷新cout 流(但并不是所有编译系统都体现出这⼀区别)。
3、在iostream中只对"<<"和">>"运算符⽤于标准类型数据的输⼊输出进⾏了重载,但未对⽤户声明的类型数据的输⼊输出进⾏重载。
如果⽤户声明了新的类型,并希望⽤"<<"和">>"运算符对其进⾏输⼊输出,按照重运算符重载来做。
谭浩强c语言程序设计(第二版)谭浩强教授的《C语言程序设计》第二版是计算机编程领域的经典教材,它以通俗易懂的语言和丰富的实例,为初学者提供了一个学习C语言的良好起点。
这本书不仅介绍了C语言的基本语法和结构,还涵盖了高级编程技巧和程序设计思想。
第一章:C语言概述谭浩强教授在第一章中对C语言的起源、特点和应用领域进行了简要介绍。
C语言由Dennis Ritchie于1972年在贝尔实验室开发,以其高效、灵活和广泛的应用而闻名。
C语言是许多现代编程语言的基础,如C++、Java和Python。
第二章:C语言程序的构成本章详细介绍了C语言程序的基本结构,包括预处理指令、函数、变量声明和语句。
谭教授强调了程序设计中的模块化思想,即通过函数来组织代码,提高代码的可读性和可维护性。
第三章:数据类型、运算符和表达式数据类型是程序设计中的基础概念,谭教授详细解释了C语言中的各种数据类型,如整型、浮点型、字符型等,以及它们在内存中的存储方式。
运算符和表达式的章节则涵盖了算术运算符、关系运算符、逻辑运算符等的使用,以及它们的优先级和结合性。
第四章:控制语句控制语句是程序流程控制的核心。
谭教授介绍了条件语句(if、switch)、循环语句(for、while、do-while)和跳转语句(break、continue、goto)。
通过大量实例,帮助读者理解如何使用这些控制语句来编写条件判断和循环处理。
第五章:数组数组是存储多个数据项的集合。
谭教授详细讲解了一维数组和二维数组的声明、初始化和访问方法。
此外,还介绍了字符串的处理,包括字符串的存储、输入输出和常用字符串处理函数。
第六章:指针指针是C语言中一个强大的特性,它允许程序员直接操作内存地址。
谭教授从指针的基本概念讲起,逐步深入到指针与数组、指针与函数的关系,以及动态内存分配等高级主题。
第七章:函数函数是模块化编程的基础。
谭教授介绍了函数的定义、声明、调用以及参数传递机制。
C语言基础教程文件和文件指针1.文件一般说来,文件是有序数据的集合。
程序文件是程序代码的有序集合,数据文件是一组数据的有序集合。
文件是被存放在外部存储设备中的信息。
对文件的处理过程就是面向文件的输入和输出过程。
文件的输入过程是从文件中读出信息,文件的输出过程是往文件中写入信息,文件的输入的过程使用读函数,实现文件输出的过程使用写函数。
文件的读写函数是实现文件操作的主要函数,本章将用大量篇幅来讲述文件的读写函数。
C语言文件被称为流式文件,其特点是不分记录或块,将文件看成是信息"流"或看成是一个字符流(文本文件),或看成是一个二进制流(二进制文件).文件的存取是以字符(字节)为单位的,读写数据流的开始和结束受程序控制。
任何一个文件都是以EOF结束,最简单的文件是只有结束符的空文件。
C语言文件包含有设备文件和磁盘文件,例如,键盘是一种输入信息的文件,显示器屏幕和打印机是输出信息的文件它们都属于设备文件。
将内存的信息放到磁盘上保存,需要时再从磁盘上装入内存,这就要使用磁盘文件,磁盘文件是计算机中常用的文件nC语言文件按存放设备分设备文件和磁盘文件;按数据的组织形式分为文本文件(ASCII码文件)和二进制文件。
文本文件是按一个字节存放一个字符的ASCII码来存放的;二进制文件是按数据在内存中的存储形式放到磁盘上的。
例如,有一个整数10000,在内存中按二进制形式存放,占2个字节,将它放在磁盘上如按文本文件形式存放,占5个字节,每个数位占一个字节。
两种存放方式各有利弊。
以文本文件形式输出便于对字符进行处理,也便于输出字符,但是占用存储空间较多,并且要花费转换时间。
以二进制文件形式输出可节省存储空间和转换时间,但是不能直接输出字符形式。
2.文件指针文件指针是一种用来指向某个文件的指针。
如果说某个文件指针指向某个文件,则是该文件指针指向某个文件存放在内存中的缓冲区的首地址。
每一个被使用的文件都要在内存中开辟一个区域,用来存放的有关信息,包括文件名字、文件状态和文件当前位置等。
第10章 C++流与文件操作主讲内容10.1 C++流的概念•C++语言中“流”是指数据的流动。
•“流”既可以表示数据从内存传送到某个载体或设备中,即输出流;也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。
•数据的输入和输出(简称为I/O)包括以下两方面:•(1) 标准的输入输出(简称标准 I/0), 即从键盘输入数据,从屏幕输出数据。
•(2) 文件的输入输出(简称文件 I/0),即从存储介质上的文件输入数据,然后将结果输出到外存储介质10.2.1 C++中的I/O流库•1. I/0 库中常见的流类有:•(1)ios: 为根基类,它直接派生四个类:输入流类istream、输出流类ostream、文件流基类fstreambase和字符串流基类strstreambase。
•(2)istream: 通用输入流类 , 支持输入操作。
同时继承了输入流类和文件流基类;•(3)ostream: 通用输出流类 ,同时继承了输出流类和文件流基类;•(4)iostream: 通用输入输出流类 , 由类 istream 和类 ostream 派生 , 支持输入输出操作。
•(5)ifstream: 输入文件流类 , 由类 istream 所派生 , 支持输入文件操作•(6) ofstream: 输出文件流类 , 由 ostream 所派生 , 支持输出文件操作•(7)fstream: 输入输出文件流类 ,由类 iostream 所派生 , 支持输入输出文件操作。
10.2.1 C++中的I/O流库• I/0 库常用的流类继承关系如图所示10.2.2 标准输入输出流对象•1.输入流对象•在 C++ 语言中可以有 3 种输入流对象的操作方式:•(1)cin是类istream的对象,用于从标准输入设备获取数据,使用运算符“>>”将输入的数据传送给程序中的变量。
“cin>>”除可以输入数据外,也可以输入字符;10.2.2 标准输入输出流对象•(2)用get()函数输入单个字符,一般的使用方式为:输入流对象.get();•该函数返回输入的字符,若遇到输入流中的结束符,则函数返回文件结束标志EOF(End of File)。
•(3)用getline()函数读入字符串,一般使用格式为:(字输入流对象.getline符指针,字符个数n)10.2.2 标准输入输出流对象•【例10.2】用getline()输入字符串应用举例•#include<iostream>•using namespace std;•void main()•{ char ch1[10];•cout<<"从键盘输入一个少于10个字符的字符串:";•cin.getline(ch1,10);•cout<<ch1<<endl; }•程序运行后屏幕显示:从键盘输入一个少于10个字符的字符串:•从键盘输入如一行字符:I Love China!•则运行结果为:I Love Ch10.2.2 标准输入输出流对象•2. 输出流对象•在 C++ 语言中提供了2种输出流对象的操作方式:•(1)cout是输出流类ostream的对象,输出结果流向标准的输出设备显示器。
10.2.2 标准输入输出流对象•常用的输出格式状态:10.2.2 标准输入输出流对象•常用输出流控制符10.2.2 标准输入输出流对象•ios 类提供公有的成员函数对流的状态进行检测和输入输出格式设置等,下表给出了每个成员函数的格式和功能说明。
10.2.2 标准输入输出流对象•(2)用输出流类成员函数 put()输出字符•C++中如果想输出单个字符,除可以使用“cout<<”语句外,还可以使用输出流函数put(),其一般格式为:•输出流对象.put(ch);•其中ch为要输出的字符。
•【例10.5】用输出流成员函数put()输出单个字符•#include<iostream>•using namespace std;•void main()•{ char str[]="I Love China!";•for(int i=0;i<strlen(str);i++)•cout.put(str[i]);•cout<<endl;•}•程序运行结果为:•I Love China!10.3 文件操作•文件是一组相关数据的有序集合。
•从用户角度看,文件可分为普通文件和设备文件两种。
•普通文件是指存储在磁盘或外部存储介质上的数据文件,可以是源文件、目标文件、可执行文件等。
•设备文件是指与主机相连的各种外部设备,如显示器、打印机、键盘等。
10.3 文件操作•C++对文件流分为3类:输入流、输出流以及输入/输出流:•(1)ifstream流类,是从istream类派生的,用于外存文件的输入操作;•(2)ofstream 流类,是从ostream类派生的,用于外存文件的输出操作;•(3)fstream 流类,是从iostream类派生的,用于外存文件的输入和输出操作。
•定义流文件对象的一般格式为fstream 流对象名;10.3.1 文件的打开与关闭•1.打开文件•文件在进行读写操作前,应先打开,文件打开方式的一般格式为:•文件流对象名.open(“文件名”,文件打开模式)•文件名可包含路径说明。
•文件打开模式:10.3.1 文件的打开与关闭•2.关闭文件•当对一个文件的读写操作完成后,为了保证数据安全,切断文件与流的联系,应及时关闭文件。
•关闭文件的一般格式为:流对象名.close()10.3.2 文本文件读写操作•文本文件的读写操作分为顺序读写和随机读写两种。
•1. 顺序读写文件•顺序读写是指从文件头一直读或写到文件尾,通常采用get(),getline(),put(),read()或write()等函数来完成对文件的读写操作。
10.3.2 文本文件读写操作•【例10.7】从键盘上输入若干行文本字符到dat文件中,直到按下Ctrl+z组合键为止(此组合键代表文件结束符EOF)•#include<iostream>•#include<fstream>•using namespace std;•void main(void)•{ char ch;•ofstream f2( "wr2.txt"); //定义f2为流对象名,并在当前目录下建立(默认打开)一个wr2的文本文件10.3.2 文本文件读写操作•if(!f2){cerr<<"file of wr2.dat not open!"<<endl;•exit(1);}•ch=cin.get(); //从cin字符中提取一个字符到ch中•while(ch!=EOF){•f2.put(ch); //把ch字符写入到f2流中•ch=cin.get();}•f2.close();•}•此程序运行后,将在当前目录下建立了一个wr2.txt的文本文件。
10.3.3 二进制文件的读写操作•对二进制文件的读写可采用两种方法:一种是使用get()和put();另一种是使用read()和write()。
•(1)用read()和write()读写二进制文件•这两个成员函数的一般格式为:文件流对象.read(字符指针buffer , 长度len);文件流对象.write(字符指针buffer , 长度len);10.3.3 二进制文件的读写操作•2、用put()和get()读写二进制文件•【例10.11】将一字符串写入到二进制文件mybinary.dat中,然后再依次读取二进制文件中的字符,并显示在屏幕上,最后输出数字字符的个数。
•#include<iostream>•#include<fstream> //文件流操作的预编译处理命令•using namespace std;•void main()•{ char ch;•int n=0;•fstream f1;•f1.open("mybinary.dat",ios::out|ios::binary);10.3.3 二进制文件的读写操作•if(!f1)•{ cout<<"mybinary.dat can't opan"<<endl;• exit(1);•}•ch=cin.get(); //从cin流中提取一个字符给ch•while(ch!=EOF) //输入字符串,按Ctrl+Z结束•{ f1.put(ch); ch=cin.get();}•f1.close();•f1.open("mybinary.dat",ios::in|ios::binary);•if(!f1)10.3.3 二进制文件的读写操作•{ cout<<"mybinary.dat can't opan"<<endl; exit(1);}•while(!f1.eof()) //读入字符串,并输出在屏幕上•{f1.get(ch);•cout<<ch;•if(ch>='0'&& ch<='9')n++; } //统计数字字符的个数•cout<<"数字字符的个数是:"<<n<<endl;•f1.close();}•运行该程序后在屏幕上输入:abcdef 1234 gh ,回车•按Ctrl+Z 结束字符串的输入•则屏幕上显示:•abcdef 1234 gh•数字字符的个数是:410.3.3 二进制文件的读写操作•3、用与文件指针有关的流成员函数实现对二进制文件的访问•文件流提供了如表所示的常用文件指针成员函数10.4 应用举例•【例10.13】学生成绩综合管理•分析:学生成绩综合管理应包括如下的内容:•1.建立数据档案。
从键盘输入若干条学生记录到指定的文件中,如•g:\student\student\xscjgl.dat•2.向文件尾追加一条记录;从文件中查找给定姓名的记录,并返回查找信息;读入文件中的多有记录,并输出到屏幕上。
•学生记录一般应包括学生姓名name,和学生成绩grade二个字段。
10.4 应用举例•1. 建立数据档案(假设有5条记录)•#include<iostream>•#include<fstream> //文件流操作的预编译处理命令•#include<string>•using namespace std;•struct stu•{char name[10];•int graed;•};10.4 应用举例•void main()•{ char *p="g:\\student\\student\\xscjgl.dat";•fstream fout(p,ios::out|ios::trunc|ios::binary);•if(!fout){cout<<"文件没打开,退出\n";exit(1);}•stu x;•cout<<"请输入学生记录,按Ctrl+Z结束输入:"<<endl;•while(cin>>)•{cin>>x.graed;•fout.write((char*)&x,sizeof(x)); }•fout.close();•cout<<"输入过程结束!"<<endl; }10.4 应用举例•程序运行后,显示:请输入学生记录,按Ctrl+Z结束输入:•然后从键盘输入如下内容:•张静 90•李莉新 78•章胜利 85•齐鑫 93•赵明明 87•^z•输入过程结束!10.4 应用举例•2. 向文件尾追加一条记录;并从文件中查找给定姓名的记录,并返回查找信息,最后读入文件中的多有记录,并输出到屏幕上。