第九章 文件操作
c程序设计(第二版)
c程序设计(第二版)C程序设计是一门基础而重要的计算机科学课程,它为学习者提供了一种高效、灵活的编程工具。
在《C程序设计(第二版)》这本书中,我们将深入探讨C语言的基本概念、语法结构、编程技巧以及实际应用。
这本书适合初学者和有一定编程基础的读者,旨在帮助他们掌握C语言编程的精髓。
第一章:C语言概述C语言是一种通用的、过程式的编程语言,由Dennis Ritchie在20世纪70年代初期开发。
它以其高效性、灵活性和广泛的应用领域而闻名。
C语言是许多现代编程语言的基石,包括C++、Java和Python等。
第二章:C语言基础本章将介绍C语言的基本元素,包括变量、数据类型、运算符和表达式。
我们还将学习如何编写简单的C程序,包括程序的结构和基本的输入输出操作。
第三章:控制结构控制结构是程序设计中的核心概念之一。
本章将介绍C语言中的三种基本控制结构:顺序结构、选择结构(if语句和switch语句)和循环结构(while循环、do-while循环和for循环)。
第四章:数组数组是存储一系列相同类型数据的集合。
本章将讨论一维数组和二维数组的声明、初始化和操作,以及如何使用数组处理更复杂的数据结构。
第五章:函数函数是C语言中实现代码复用的重要机制。
本章将介绍如何定义函数、调用函数、传递参数以及返回值的使用。
此外,还将讨论递归函数和函数指针的概念。
第六章:指针指针是C语言中一个强大的特性,它允许程序员直接操作内存地址。
本章将解释指针的基本概念,包括指针的声明、指针与数组的关系以及指针在函数中的应用。
第七章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的方式。
本章将介绍如何定义和使用结构体和联合体,以及它们在实际编程中的应用。
第八章:预处理器预处理器是C语言编译过程中的一个阶段,它处理源代码中的宏定义、文件包含和条件编译指令。
本章将讨论预处理器的工作原理和常用指令。
第九章:文件操作文件操作是程序与外部数据交互的重要方式。
操作系统原理9-文件系统
10
9.1.3 文件系统 通用文件系统应具有以下功能: 1、提供用户对文件操作的命令; 2、提供用户共享文件的机制; 3、管理文件的存储介质; 4、提供文件的存取控制的机制,保障文件及文件系统的 安全性; 5、提供文件及文件系统的备份和恢复功能; 6、提供对文件的加密和解密功能。
11
9.2 文件的逻辑组织与存取方法 9.2.1 文件的组织 可以用两种不同的观点去进行研究文件结构 用户观点: 是研究用户“思维”中的抽象文件,或称逻辑文件,其研 究的侧重点在于为用户提供一种逻辑结构清晰、使用简 便的逻辑文件形式。用户将按照这种形式去存储、检索 和加工有关文件中的信息。 实现观点: 是研究驻留在设备“介质”中的实际文件,或称物理文件 。它研究的侧重点是选择一些工作性能良好、设备利用 率高的物理文件形式。系统将按照这种形式同外部设备 打交道并控制信息的传输
9
9.1.3 文件系统 9.1.3 文件系统 文件系统是操作系统中负责管理和存取文件信息的软件 机构,它是由管理文件所需的数据结构和相应的管理软 件以及访问文件的一组操作组成。 从系统的角度看:文件系统是一个负责文件存储空间管 理的机构。 从用户的角度看:文件系统是用户在计算机上存储信息 、和使用信息的接口。
40
9.6 文件目录 9.6.1 文件目录及内容 文件目录项:
1.文件名 2.文件的大小,单位:字节 3.文件在物理存储介质中的位置 。取决于文件的物理结构 。 对于连续文件:文件起始块号( 即文件的第一个物理块块号); 对于串联文件:指向第一个物理 块的指针; 对于索引文件:索引表。 4.存取控制信息 文件主和其它用户对该文件的访 问权限。 5.管理信息 包含文件创建的日期和时间,最 近修改该文件的日期和时间等。 6.文件的类型
掌握Racket编程语言的基本语法和结构
掌握Racket编程语言的基本语法和结构Racket是一种强大的函数式编程语言,它是Scheme语言的一种方言,被广泛应用于教育和实际编程中。
本文将介绍Racket编程语言的基本语法和结构,帮助读者掌握这门语言。
第一章:Racket的安装和环境设置在开始学习Racket之前,首先需要安装Racket编程环境。
可以从Racket官方网站下载安装程序,并按照提示进行安装。
安装完成后,还可以通过设置环境变量,将Racket添加到系统路径中,方便在命令行中使用Racket。
第二章:Racket的数据类型Racket支持多种数据类型,包括整数、浮点数、字符串、布尔值等。
可以通过赋值语句将值存储在变量中,并使用变量进行计算和操作。
此外,Racket还支持列表、向量和哈希表等复合数据类型,可以灵活地处理数据。
第三章:Racket的基本操作Racket提供了丰富的基本操作函数,可以对数据进行处理和转换。
例如,可以使用"+"和"-"操作符进行数值运算,使用"substring"函数获取字符串的子串,使用"list-ref"函数访问列表的元素等。
掌握这些基本操作是编写Racket程序的基本要求。
第四章:Racket的条件表达式条件表达式是编程中常用的控制结构,Racket提供了多种条件表达式来满足不同的需求。
其中,"if"表达式可以根据条件执行不同的代码分支,"cond"表达式可以做更复杂的条件判断,而"case"表达式可以根据不同的条件值执行不同的操作。
了解和掌握这些条件表达式对于编写复杂的逻辑是必要的。
第五章:Racket的函数定义和调用Racket是一种函数式编程语言,函数在Racket中起着核心的作用。
可以使用"define"关键字来定义函数,并使用参数和函数体来描述函数的行为。
中等职业院校c语言基础教案
中等职业院校C语言基础教案第一章:C语言概述1.1 课程介绍了解C语言的历史和发展背景了解C语言的特点和应用领域掌握C语言的基本语法和结构1.2 教学目标了解C语言的基本概念和特点掌握C语言的数据类型和变量理解C语言的基本语法和结构1.3 教学内容C语言的历史和发展背景C语言的特点和应用领域C语言的基本语法和结构1.4 教学方法讲解和示范相结合,通过实例讲解C语言的基本语法和结构引导学生通过编程实践来加深对C语言的理解和掌握1.5 教学评估通过课堂讲解和示范,学生能够理解C语言的基本概念和特点通过编程实践,学生能够掌握C语言的数据类型和变量通过课后作业和测试,学生能够理解C语言的基本语法和结构第二章:变量和数据类型2.1 课程介绍了解C语言的数据类型和变量掌握C语言的基本数据类型及其特点学习变量的声明和使用2.2 教学目标掌握C语言的基本数据类型学会声明和使用变量理解不同数据类型的存储方式和大小2.3 教学内容C语言的基本数据类型变量的声明和使用不同数据类型的存储方式和大小2.4 教学方法通过实例讲解和示范,让学生掌握C语言的基本数据类型及其特点引导学生通过编程实践来加深对变量声明和使用的理解2.5 教学评估通过课堂讲解和示范,学生能够掌握C语言的基本数据类型及其特点通过编程实践,学生能够正确声明和使用变量通过课后作业和测试,学生能够理解不同数据类型的存储方式和大小第三章:运算符和表达式3.1 课程介绍了解C语言的运算符和表达式掌握不同运算符的功能和用法学会编写简单的表达式3.2 教学目标掌握C语言的算数运算符、关系运算符、逻辑运算符等学会编写赋值表达式、条件表达式和逻辑表达式理解运算符的优先级和结合性3.3 教学内容算数运算符、关系运算符、逻辑运算符等赋值表达式、条件表达式和逻辑表达式运算符的优先级和结合性3.4 教学方法通过实例讲解和示范,让学生掌握不同运算符的功能和用法引导学生通过编程实践来加深对表达式的理解3.5 教学评估通过课堂讲解和示范,学生能够掌握C语言的运算符及其功能和用法通过编程实践,学生能够编写简单的表达式通过课后作业和测试,学生能够理解运算符的优先级和结合性第四章:控制语句4.1 课程介绍了解C语言的控制语句掌握条件语句、循环语句等功能和用法学会编写控制流程的程序4.2 教学目标掌握if条件语句和switch多分支语句掌握for循环、while循环和do-while循环理解循环控制语句的执行流程和条件4.3 教学内容if条件语句和switch多分支语句for循环、while循环和do-while循环循环控制语句的执行流程和条件4.4 教学方法通过实例讲解和示范,让学生掌握条件语句和循环语句的功能和用法引导学生通过编程实践来加深对控制流程的理解4.5 教学评估通过课堂讲解和示范,学生能够掌握C语言的控制语句及其功能和用法通过编程实践,学生能够编写控制流程的程序通过课后作业和测试,学生能够理解循环控制语句的执行流程和条件第五章:函数和编译预处理5.1 课程介绍了解C语言的函数和编译预处理掌握函数的定义和调用学会使用编译预处理指令5.2 教学目标掌握函数的定义、声明和调用理解函数的参数传递和返回值学会使用编译预处理指令5.3 教学内容函数的定义、声明和调用函数的参数传递和返回值编译第六章:数组和字符串6.1 课程介绍了解C语言中的数组和字符串掌握数组的声明、使用和内存分布学会处理字符串的基本操作6.2 教学目标掌握一维和多维数组的声明和使用理解数组的内存分布和访问方式学会字符串的声明、复制、连接和转换6.3 教学内容数组的声明、初始化和使用多维数组的声明和使用字符串的声明和操作函数字符串与数组的关系6.4 教学方法通过实例讲解和示范,让学生掌握数组和字符串的概念及使用方法引导学生通过编程实践来加深对数组和字符串操作的理解6.5 教学评估通过课堂讲解和示范,学生能够理解数组和字符串的概念及其使用方法通过编程实践,学生能够熟练使用数组和字符串进行编程通过课后作业和测试,学生能够掌握数组的内存分布和访问方式,以及字符串的基本操作第七章:指针7.1 课程介绍了解C语言中的指针概念掌握指针的声明和使用学会通过指针访问和操作内存7.2 教学目标掌握指针的概念和声明理解指针与地址的关系学会指针的算术运算和指针数组7.3 教学内容指针的概念和声明指针与地址的关系指针的算术运算指针数组和指针函数7.4 教学方法通过实例讲解和示范,让学生掌握指针的概念及其使用方法引导学生通过编程实践来加深对指针操作的理解7.5 教学评估通过课堂讲解和示范,学生能够理解指针的概念及其使用方法通过编程实践,学生能够熟练使用指针进行内存访问和操作通过课后作业和测试,学生能够掌握指针的算术运算和指针数组的使用第八章:结构体和联合体8.1 课程介绍了解C语言中的结构体和联合体掌握结构体和联合体的声明和使用学会通过结构体和联合体组织复杂数据8.2 教学目标掌握结构体和联合体的声明和初始化理解结构体和联合体的内存布局学会使用结构体和联合体处理复杂数据8.3 教学内容结构体和联合体的声明和初始化结构体和联合体的内存布局结构体数组和结构指针结构体和联合体在实际编程中的应用8.4 教学方法通过实例讲解和示范,让学生掌握结构体和联合体的概念及其使用方法引导学生通过编程实践来加深对结构体和联合体操作的理解8.5 教学评估通过课堂讲解和示范,学生能够理解结构体和联合体的概念及其使用方法通过编程实践,学生能够熟练使用结构体和联合体进行数据组织通过课后作业和测试,学生能够掌握结构体数组和结构指针的使用,以及结构体和联合体在实际编程中的应用第九章:文件操作9.1 课程介绍了解C语言中的文件操作掌握文件打开、读写、关闭等基本操作学会使用文件指针进行文件操作9.2 教学目标掌握文件打开、读写、关闭等基本操作理解文件指针的概念和作用学会使用文件操作函数处理文件数据9.3 教学内容文件打开、读写、关闭等基本操作文件指针的概念和作用文件操作函数和文件模式9.4 教学方法通过实例讲解和示范,让学生掌握文件操作的概念及其使用方法引导学生通过编程实践来加深对文件操作的理解9.5 教学评估通过课堂讲解和示范,学生能够理解文件操作的概念及其使用方法通过编程实践,学生能够熟练使用文件操作函数进行文件读写通过课后作业和测试,学生能够掌握文件指针的概念和作用,以及文件操作函数的处理方式第十章:项目实践10.1 课程介绍综合运用所学知识进行项目实践培养重点和难点解析一、C语言概述C语言的历史和发展背景C语言的特点和应用领域C语言的基本语法和结构二、变量和数据类型不同数据类型的存储方式和大小变量的声明和使用三、运算符和表达式运算符的优先级和结合性不同运算符的功能和用法四、控制语句循环控制语句的执行流程和条件条件语句的执行流程和条件五、函数和编译预处理函数的声明、定义和调用编译预处理指令的使用六、数组和字符串数组的内存分布和访问方式字符串的声明、复制、连接和转换七、指针指针与地址的关系指针的算术运算和指针数组八、结构体和联合体结构体和联合体的内存布局结构体数组和结构指针的使用九、文件操作文件打开、读写、关闭等基本操作文件指针的概念和作用十、项目实践综合运用所学知识进行项目实践本教案涵盖了C语言基础的十个重要章节,从C语言的概述到变量和数据类型,再到运算符和表达式,控制语句,函数和编译预处理,数组和字符串,指针,结构体和联合体,文件操作,到项目实践。
c程序设计第四版基础
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语言中管理内存的重要特性。
第九章 文件压缩与解压缩
第九章文件压缩与解压缩在Linux系统下,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,需要不同的程序命令来进行压缩和解压缩。
一、以zip和unzip处理.zip文件1>以zip创建.zip文件“zip”是广泛使用的压缩程序,文件经过它压缩后会产生扩展名为.zip的压缩文件。
Zip是功能强大的程序,同时也包含了很多参数,可以直接输入“zip”参数,可以相应的参考:[root@localhost root]# zip使用方法就是先指定压缩后的文件,然后接着输入所有要一起压缩的文件名称即可。
[root@localhost root]# ls file*[root@localhost root]# zip file.zip file*一起要压缩的文件类型并没有限制,如下范例:[root@localhost root]# zip file.zip anaconda-ks.cfg sys.log 123.txta)为了节省硬盘的空间,可以在创建压缩文件后,要求系统会自动删除源文件,需要参数“m”:[root@localhost root]# zip –m file.zip file*在压缩整个目录内容时,经常出现目录中存在其他子目录的情形,此时有两个选择。
b)若选择一并压缩子目录中的内容,可以使用参数“-r”(Recursive); [root@localhost root]# zip –r file.zip *c)若不需要压缩子目录中的文件,则使用参数“-j”(Junk)[root@localhost root]# zip –j file.zip *d)若是压缩后的文件可能会在其他的平台上解压缩,例如MS-DOS或WINDOWS系统,最好使用兼容的命名格式即8.3的命名方式,变更文件名称,然后再进行压缩,需要加参数“k ”来执行压缩。
c语言程序设计教程第三版习题答案
c语言程序设计教程第三版习题答案C语言程序设计教程第三版习题答案第一章:C语言概述1. 简述C语言的特点。
C语言是一种结构化编程语言,具有高级语言的特点,同时支持底层硬件操作。
其特点包括:简洁、高效、可移植、丰富的运算符、数据结构支持、广泛的库函数等。
2. 什么是编译型语言?编译型语言是指源代码在执行前需要通过编译器转换成机器语言的程序设计语言。
C语言就是一种编译型语言。
第二章:数据类型、运算符和表达式1. 列出C语言的基本数据类型。
C语言的基本数据类型包括:整型(int)、字符型(char)、浮点型(float和double)。
2. 说明赋值运算符的用法。
赋值运算符(=)用于将右侧表达式的值赋给左侧的变量。
例如:`int a = 10;` 将整数值10赋给变量a。
第三章:控制结构1. 什么是条件语句?条件语句用于根据条件的真假来执行不同的代码块。
C语言中的条件语句主要有if语句和switch语句。
2. 循环语句有哪些?C语言中的循环语句主要有for循环、while循环和do-while循环。
第四章:数组和字符串1. 数组的声明和初始化方式。
数组声明的一般形式为:`type arrayName[arraySize];`。
初始化可以使用花括号一次性赋值,如:`int arr[5] = {1, 2, 3, 4, 5};`。
2. 字符串在C语言中的表示方法。
在C语言中,字符串以字符数组的形式存在,以空字符('\0')作为结束标志。
第五章:函数1. 函数的定义和调用。
函数定义的一般形式为:`returnTypefunctionName(parameterList) { /* function body */ }`。
调用函数时,使用其名称和必要的参数。
2. 函数的参数传递方式有哪些?C语言中函数的参数传递方式主要有值传递(pass by value)和引用传递(pass by reference)。
VB第九章 文件
设计界面:在窗体中添加驱动器列表框Drive1、目录列表框 Dir1和文件列表框File1以及框架Frame1、图象框Image1;
将File1的Pattern属性改为“*.bmp;*.exe”
将Image1的Stretch属性设置为True
Private Sub Form_Load()
File1.Pattern = "*.bmp;*.exe" End Sub
在2号缓冲区读取C盘根目录下名为Student.dat的文件的语句为: Open “C:\Student.dat” For Input As #2
2、写操作 要将数据写入顺序文件,应以Output或Append方式打开 该文件,然后使用Print #或Write # 语句将数据写入文件中。 1)Print # 文件号,[数据项列表] 其中:数据项列表和前面讲过的对象的Print方法中的格式基 本相同,只是在每行多了回车换行符。
文件的分类及访问模式: 顺序文件:是按记录号的顺序进行存储的文件。见下图:
记录1 记录2 记录3 …… 记录N
记录分隔符
顺序文件中每条记录的长度可不相同,记录与记录之间 的分隔符为回车换行符(Chr(13)和Chr(10)),而记录中各 数据项之间还有特定的分界符(如逗号等)。 显然,顺序文件是将记录按行进行存储。如文本文件就是 典型的顺序文件,其中的每一行字符串都是一条记录。 顺序文件在机器中是以ASCII形式进行存储的。 顺序访问模式:查找某个记录是从第一条记录开始,直到找 到需要的记录为止。修改某个记录,则将整个文件读出来, 修改后再将整个文件写回外存。此模式专门处理文本文件。
如果要在文件列表框中双击某个可执行文件就能执行该文件,则必须 要有如下的过程: Private Sub File1_DblClick( )
第九章输入输出处理
9
2. 字节流——OutputStream
write(int b)
将一个整数输出到流中(只输出低位字节,抽象)
write(byte b[])
将字节数组中的数据输出到流中
write(byte b[], int off, int len)
将数组b中从off指定的位置开始,长度为len的数据 输出到流中
本讲内容
1、I/O概述 2、I/O字节流 3、I/O字符流 4、随机访问文件
1
1. I/O概述
大部分程序都需要输入/输出处理,比如从键盘读取数 据、向屏幕中输出数据、从文件中读或者向文件中写 数据、在一个网络连接上进行读写操作等。 在Java中,把这些不同类型的输入、输出抽象为流 (Stream),而其中输入或输出的数据则称为数据流 (Data Stream),用统一的接口来表示,从而使程序 设计简单明了。
ObjectInputStream PipedInputStream SequenceInputStream StringBufferInputStream
OutputStream
ByteArrayOutputStream FileOutputStream FilterOutputStream
FilterInputStream(InputStream in); FilterOutputStream(OutputStream out);
这两个类是抽象类,构造方法也是保护方法。
15
2. 字节流——过滤流:缓冲流
类BufferedInputStream和BufferedOutputStream实现 了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O 流“捆绑”到缓冲流上,可以提高读写效率。 在初始化时,除了要指定所连接的I/O流之外,还可以 指定缓冲区的大小。缺省大小的缓冲区适合于通常的 情形;最优的缓冲区大小常依赖于主机操作系统、可 使用的内存空间以及机器的配置等;一般缓冲区的大 小为内存页或磁盘块等地整数倍,如8912字节或更小。
python第九章作业(初级)
python第九章作业(初级)摘要:I.引言- 介绍Python 编程语言- 说明第九章作业的主题和难度II.第九章作业概述- 回顾第九章所学内容- 解释作业要求III.作业解答过程- 第一题解答- 题目描述- 解题思路- 代码实现- 第二题解答- 题目描述- 解题思路- 代码实现- 第三题解答- 题目描述- 解题思路- 代码实现IV.总结- 总结本次作业的解答过程- 提出需要改进的地方- 鼓励继续学习Python 编程正文:Python 是一种广泛应用于多个领域的编程语言,其简洁的语法和强大的功能使其成为初学者和专业开发者的理想选择。
今天,我们将探讨第九章的作业,帮助大家巩固所学的知识。
在第九章中,我们学习了如何使用Python 进行文件操作。
在这一章的作业中,我们需要运用所学的知识来完成三个实际问题。
首先,我们来看第一个问题。
题目描述如下:请编写一个Python 程序,从文件中读取一行数据,并将其转换为大写。
解题思路如下:1.打开文件并读取一行数据2.将读取到的数据转换为大写3.将大写后的数据写入到新的文件中以下是实现该功能的代码:```pythonwith open("input.txt", "r") as file:line = file.readline()upper_line = line.upper()with open("output.txt", "w") as file:file.write(upper_line)```接下来,我们来解答第二个问题。
题目描述如下:请编写一个Python 程序,从文件中读取一串数字,并将其转换为列表。
解题思路如下:1.打开文件并读取一串数字2.使用split() 方法将数字串分割为列表以下是实现该功能的代码:```pythonwith open("input.txt", "r") as file:numbers_str = file.readline()numbers = list(map(int, numbers_str.split()))print(numbers)```最后,我们来解答第三个问题。
c语言程序设计基础第五版知识点总结
c语言程序设计基础第五版知识点总结C语言是一门广泛应用于科学计算、操作系统、嵌入式系统等领域的编程语言。
对于初学者来说,进修C语言是打下编程基础的重要一步。
本文将总结《C语言程序设计基础第五版》中的主要知识点,援助读者快速精通C语言的基本观点和编程技巧。
第一章:C程序设计概述本章主要介绍C语言的进步历史、特点以及编程环境的配置。
读者可以了解到C语言的起源以及C语言程序的基本框架。
第二章:C语言基本数据类型(数据类型、变量、常量)C语言中有多种数据类型,包括整型、字符型、实型等。
本章详尽介绍了各种数据类型的定义和使用方法,并提供了一些实例演示。
第三章:C语言运算符和表达式运算符是C语言中常用的操作符号,用于完成各种数学和逻辑运算。
本章详尽介绍了各种运算符的使用方法和优先级规则,并提供了一些例子进行实践。
第四章:C语言控制结构控制结构是编程语言中用于控制程序流程的语句和机制。
本章介绍了C语言中的次序结构、选择结构和循环结构,并提供了一些实例演示,援助读者理解和应用这些结构。
第五章:C语言数组与字符串数组是C语言中常用的一种数据结构,可以存储多个相同类型的数据。
本章详尽介绍了数组的定义和使用方法,并提供了一些例子援助读者熟识数组的操作。
字符串是由字符组成的一种特殊的数组,本章也介绍了字符串的相关观点和操作方法。
第六章:C语言函数与参数传递函数是C语言中模块化编程的重要组成部分,函数可以将一些操作封装起来,提高代码的可读性和重用性。
本章详尽介绍了函数的定义、调用和传递参数的方法,并提供了一些实例援助读者精通函数的使用技巧。
第七章:C语言指针指针是C语言中分外重要的观点,通过指针可以实现对内存的直接操作。
本章介绍了指针的定义和使用方法,包括指针的基本操作、指针与数组和函数的干系等。
第八章:C语言结构体、联合与列举结构体、联合和列举是C语言中用于组织和管理复杂数据的机制。
本章详尽介绍了结构体、联合和列举的定义和使用方法,并提供了一些实例援助读者理解和应用这些机制。
第9章 JSP中的文件操作-JSP实用教程(第4版)-耿祥义-清华大学出版社
9.2 RandomAccessFile类
需要对一个文件进行读写操作时,可以创建一个RandomAccessFile对象, RandomAccessFile对象可以读取文件的数据,也可以向文件写入数据。
RandomAccessFile类的两个构造方法:
• RandomAccessFile(String name,String mode) 参数name用来确定一个文件名, 参数mode取“r”(只读)或“rw”(可读写),决定对文件的访问权利。
example9_2.jsp
2.servlet Example9_2_Servlet.java
3.配置文件web.xml web.xml
9.3 文件上传
用户通过一个JSP页面上传文件给服务器时,form表单必须将ENCTYPE的属性值设成 multipart/form-data,并含有File类型的GUI组件。含有File类型GUI组件的form表单如 下所示:
例子9_3中,用户通过example9_3.jsp页面上传文本文件A.txt。
9.3 文件上传
例子9_3中,用户通过example9_3.jsp页面上传文本文件A.txt。 例子9_3 example9_3.jsp
example9_3_accept.jsp
例子9_4
例子9_4中,通过输入、输出流技术获取文件的内容,即去掉表单的信息。 根据不同用户的session对象互不相同这一特点,将用户提交的全部信息首 先保存成一个临时文件,该临时文件的名字是用户的session对象的id,然 后读取该临时文件的第2行,因为这一行中含有用户上传的文件的名字, 再获取第4行结束的位置,以及倒数第6行结束的位置,因为这两个位置之 间的内容是上传文件的内容,然后将这部分内容存入文件,该文件的名字 和用户上传的文件的名字保持一致,最后删除临时文件。 例子9_4的Web应用程序使用MVC模式(MVC的知识见第7章)。
第九章 文件分析
第九章文件9.1 文件系统控件驱动器、目录和文件列表框1. 驱动器列表框Drive属性:[对象.]Drive [= drive]Change事件:重新设置Drive属性引发Change事件2. 目录列表框Path属性:[对象.]Path [= pathname]Change事件:重新设置Path 属性引发Change事件3. 文件列表框Path属性:显示该路径下的文件。
重新设置Path属性引发PathChange事件。
Pattern属性:显示的文件类型。
[对象.]Pattern [= value]重新设置Pattern属性引发PatternChange事件。
例如:filFile.Pattern = "*.frm",显示*.frm文件。
多个文件类型用分号;分界。
例如: "*.frm;*.frx"FileName属性:[对象.]FileName [= pathname]引用时只返回文件名,相当于ilFile.List(filFile .ListIndex),需用Path属性得到其路径;设置时可带路径。
Click、DblClick事件:例如,单击输出文件名。
Sub filFile_Click( )MsgBox filFile.FileNameEnd Sub例如,双击执行可执行程序:Sub filFile_DblClick( )ChDir (dirDirectory.Path) ' 改变当前目录RetVal = Shell(filFile.FileName, 1) ' 执行程序End Sub9.2 文件的读写文件:存储在外部介质上数据的集合。
按名存取1. 记录由若干个相互关联的数据项组成。
例如,由学生的学习成绩信息组成的记录:2. 文件及其种类文件是记录的集合。
顺序访问模式:顺序文件,记录可长可短;随机访问模式:随机文件,记录的长度相同;二进制访问模式:二进制文件(可认为记录长度为1)。
《C语言程序设计》 课后习题答案 高等教育出版社
《C语言程序设计》课后习题答案高等教育出版社《C语言程序设计》课后习题答案高等教育出版社第一章:C语言概述1. C语言的特点C语言是一种以处理底层任务和系统编程为目标的高级编程语言。
其特点包括语法简洁、执行效率高、可移植性强等。
第二章:C语言基本数据类型1. C语言中的基本数据类型C语言中的基本数据类型包括整型、字符型、浮点型等。
整型可以进一步细分为有符号整型和无符号整型。
第三章:C语言运算符1. C语言中的运算符C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。
这些运算符用于执行各种数学和逻辑操作。
第四章:C语言控制语句1. C语言中的条件语句C语言提供了if语句和switch语句来实现条件判断。
if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。
第五章:C语言函数1. C语言中的函数定义和调用函数是C语言中的基本模块,用于封装可重用的代码。
函数定义包括函数返回类型、函数名、参数列表和函数体等部分。
第六章:C语言数组1. C语言中的数组定义和使用数组是一组相同类型的数据元素的集合。
C语言中可以使用数组来存储和操作大量数据。
第七章:C语言指针1. C语言中的指针概念指针是一种变量,它存储了内存地址。
通过指针,可以直接访问和修改对应内存地址中的数据。
第八章:C语言字符串1. C语言中的字符串操作字符串是由一系列字符组成的数据类型。
C语言通过字符数组来表示和操作字符串。
第九章:C语言结构体1. C语言中的结构体定义和使用结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。
第十章:C语言文件操作1. C语言中的文件读写操作文件操作是一种重要的数据输入和输出方式。
C语言提供了一系列函数来实现文件的读写操作。
总结:通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。
希望本文对读者有所帮助。
c程序设计第三版课后答案完整版
c程序设计第三版课后答案完整版C程序设计第三版课后答案完整版C程序设计是一门基础而重要的计算机科学课程,它不仅教授编程语言本身,还涵盖了程序设计的基本概念和技巧。
第三版的教材在内容上进行了更新和扩充,以适应现代编程教育的需求。
以下是基于第三版C 程序设计教材的课后答案完整版,供同学们参考学习。
第一章:C语言概述1. C语言的历史和特点- C语言由Dennis Ritchie在1972年开发,用于UNIX操作系统。
- 特点包括跨平台、高效、灵活、可移植。
2. C语言的基本组成- C程序由函数、变量、表达式和控制语句组成。
3. C程序的编写和运行过程- 编写源代码,编译,链接,生成可执行文件,运行。
第二章:数据类型、运算符和表达式1. 基本数据类型- 整型(int)、浮点型(float)、双精度型(double)、字符型(char)。
2. 变量声明和初始化- 使用类型说明符声明变量,初始化赋予初值。
3. 运算符- 算术运算符、关系运算符、逻辑运算符、位运算符等。
4. 表达式- 表达式由操作数和运算符组成,用于计算结果。
第三章:控制语句1. 条件语句- if语句、switch语句。
2. 循环语句- while循环、do-while循环、for循环。
3. 跳转语句- break语句、continue语句、return语句、goto语句。
第四章:函数1. 函数的定义和声明- 函数由返回类型、函数名、参数列表和函数体组成。
2. 函数的调用- 调用函数时,需要传递参数并接收返回值。
3. 函数的作用域和生命周期- 局部变量的作用域仅限于函数内部,全局变量可在程序中多处访问。
第五章:数组和字符串1. 数组的基本概念- 存储相同类型元素的集合。
2. 字符串的操作- 字符串是字符数组,以空字符'\0'结尾。
3. 常用字符串处理函数- strcpy、strcat、strlen、strcmp等。
第六章:指针1. 指针的基本概念- 指针变量存储另一个变量的地址。
标准c语言教程 英文版 pdf
标准c语言教程英文版pdf一、简介《标准C语言教程英文版PDF》是一本全面、深入的C语言教程,旨在帮助读者掌握C语言的基础知识、语法规则和编程技巧。
本教程采用英文版PDF格式呈现,方便读者随时随地学习和参考。
二、内容概述本教程涵盖了C语言的基本语法、数据类型、运算符、表达式、控制结构、函数、数组、指针、结构体、文件操作等核心内容。
通过本教程的学习,读者可以全面了解C语言的各个方面,并掌握在实际编程中应用C语言的能力。
三、章节介绍1.第一章:C语言概述介绍C语言的发展历史、特点和应用领域。
通过本章学习,读者可以了解C 语言的基本概念,为后续学习打下基础。
2.第二章:数据类型和变量讲解C语言的基本数据类型,包括整数、浮点数、字符等。
同时,介绍变量的声明和赋值方法。
3.第三章:运算符和表达式讲解C语言的常见运算符,包括算术运算符、比较运算符、位运算符等。
通过本章学习,读者可以掌握C语言的基本算术运算。
4.第四章:控制结构讲解C语言的三种基本控制结构:if-else语句、switch语句、循环结构(for、while等)。
通过本章学习,读者可以掌握C语言的控制流程。
5.第五章:函数和库函数讲解函数的定义和调用方法,以及标准库函数的用法。
通过本章学习,读者可以掌握C语言的函数编程技巧。
6.第六章:数组和字符串讲解数组和字符串的基本概念和用法。
通过本章学习,读者可以掌握在C语言中处理数组和字符串的方法。
7.第七章:指针和内存管理讲解指针的基本概念和用法,以及内存管理的相关知识。
通过本章学习,读者可以掌握在C语言中操作内存的方法。
8.第八章:结构体和联合讲解结构体和联合的基本概念和用法。
通过本章学习,读者可以掌握在C语言中创建自定义数据类型的方法。
9.第九章:文件操作讲解C语言的文件操作功能,包括文件打开、读写、关闭等操作。
通过本章学习,读者可以掌握在C语言中处理文件的方法。
四、学习资源本教程提供了丰富的在线学习资源,包括视频教程、示例代码、习题解答等。
电厂技术文件管理制度
电厂技术文件管理制度第一章总则为规范电厂技术文件管理工作,提高技术文件管理水平,保证技术文件的完整性和安全性,制定本管理制度。
第二章适用范围本管理制度适用于我电厂的技术文件管理工作。
第三章技术文件定义技术文件是指供技术人员参考的有关工程建设、装备制造和维修保养的各种设计、规范、标准、规程、作业指导书、图纸、手册、报告、记录、数据等文件。
第四章技术文件的分类根据技术文件的性质和用途,技术文件可分为以下几类:1. 设计文件:包括工程项目规划、设计方案、施工图纸等;2. 规范文件:包括国家标准、行业标准、地方标准等;3. 操作文件:包括设备操作手册、作业指导书等;4. 维修文件:包括设备维修手册、保养要求等。
第五章技术文件的编制1. 技术文件的编制应符合相关规范和标准的要求,确保内容正确、完整、准确、清晰;2. 技术文件的编制应有专门的人员负责,定期进行审核和更新,确保信息的及时性和可靠性;3. 技术文件的编制应根据不同类别进行分类和归档,做到方便查阅和管理。
第六章技术文件的审批1. 技术文件必须经过严格的审批程序才能发布和使用;2. 审批程序包括编制单位的内部审核、管理部门的审查、主管领导的批准等环节;3. 审批人员要对技术文件的内容进行认真审查,确保符合相关标准和规范。
第七章技术文件的备份1. 技术文件应定期进行备份,确保数据的安全性和可靠性;2. 备份数据要保存在不同的地点,防止因灾害等意外事件导致数据丢失;3. 备份数据要定期检查和更新,确保备份数据的完整性。
第八章技术文件的存档1. 技术文件的存档要按照规定的时间和要求进行归档;2. 存档文件要进行分类管理,确保查阅方便和管理到位;3. 存档文件要定期进行检查和更新,确保存档文件的完整性。
第九章技术文件的使用1. 技术文件的使用必须符合相关规定和标准,严禁超范围使用;2. 使用技术文件的人员必须接受相关培训和考核,确保使用操作的正确性和安全性;3. 使用技术文件的人员如有问题需及时向主管领导或技术人员反馈。
c语言程序设计(第二版)王敬华
c语言程序设计(第二版)王敬华C语言程序设计(第二版)是由王敬华教授编写的一本C语言教材,它不仅涵盖了C语言的基础语法和程序设计方法,还深入探讨了C语言的高级特性和应用实践。
这本书适合作为计算机科学与技术专业的本科生教材,也适合自学者和工程技术人员参考。
第一章:C语言概述本章介绍了C语言的发展历程、特点以及与其他编程语言的比较。
C语言以其高效性、灵活性和广泛的应用领域而著称。
作者还介绍了C语言的编译过程和开发环境的搭建。
第二章:数据类型与表达式数据是程序设计中的基础元素。
本章详细讲解了C语言中的基本数据类型,包括整型、浮点型、字符型等,以及它们的存储方式和范围。
同时,介绍了常量、变量的概念和作用域,以及表达式的构成和求值规则。
第三章:控制语句控制语句是程序流程控制的核心。
本章介绍了条件语句(if、switch)、循环语句(for、while、do-while)以及跳转语句(break、continue、goto)。
通过丰富的示例代码,帮助读者理解各种控制语句的用法和逻辑。
第四章:函数函数是程序模块化设计的基础。
本章讲解了函数的定义、声明、调用以及参数传递机制。
包括值传递和引用传递的区别,以及如何设计和使用递归函数。
第五章:数组数组是存储多个数据的集合。
本章介绍了一维数组和多维数组的声明、初始化和访问方法。
同时,探讨了数组在程序设计中的应用,如排序、搜索等算法的实现。
第六章:指针指针是C语言中的一个重要概念。
本章详细讲解了指针的基本概念、指针与数组的关系、指针的运算以及指针在函数中的应用。
通过指针,可以更灵活地操作内存和数据。
第七章:结构体与联合体结构体和联合体是C语言中实现复杂数据类型的方式。
本章介绍了如何定义和使用结构体、联合体以及枚举类型,以及它们在程序设计中的应用。
第八章:预处理指令预处理指令是C语言编译前的处理指令。
本章介绍了宏定义、文件包含、条件编译等预处理指令的用法和作用。
第九章:文件操作文件操作是程序与外部世界交互的一种方式。
初中信息技术《打字练习—易语言应用》教案
初中信息技术《打字练习—易语言应用》优秀教案第一章:课程导入1.1 教学目标让学生了解打字练习的重要性,提高学生的打字速度和准确性。
引出易语言的概念,让学生对易语言有一个初步的认识。
1.2 教学内容讲解打字练习的意义和好处。
介绍易语言的特点和应用场景。
1.3 教学过程通过讲解实例,让学生了解打字练习的重要性。
引导学生思考如何利用易语言进行打字练习。
第二章:易语言基础知识2.1 教学目标让学生掌握易语言的基本语法和功能。
培养学生编写简单程序的能力。
2.2 教学内容讲解易语言的基本语法,如变量、数据类型、运算符等。
介绍易语言的基本功能,如输入输出、控制流程等。
2.3 教学过程通过讲解实例,让学生了解易语言的基本语法和功能。
引导学生动手编写简单的易语言程序。
第三章:打字练习程序设计3.1 教学目标让学生学会设计打字练习程序。
培养学生解决问题的能力。
3.2 教学内容讲解如何设计打字练习程序,包括输入输出设计、控制流程设计等。
介绍打字练习程序的评价方法,如打字速度、准确率等。
3.3 教学过程通过讲解实例,让学生了解打字练习程序的设计方法。
引导学生动手设计并实现打字练习程序。
第四章:打字练习程序优化4.1 教学目标让学生学会优化打字练习程序。
培养学生编程思维和解决问题的能力。
4.2 教学内容讲解如何优化打字练习程序,如提高运行效率、增加功能等。
介绍打字练习程序的测试方法和调试技巧。
4.3 教学过程通过讲解实例,让学生了解打字练习程序的优化方法。
引导学生动手优化打字练习程序。
第五章:综合练习与拓展5.1 教学目标让学生综合运用所学知识,提高编程能力。
引导学生进行拓展学习,培养学生的创新思维。
5.2 教学内容提供综合练习题,让学生巩固所学知识。
介绍易语言的其他应用领域,引导学生进行拓展学习。
5.3 教学过程通过综合练习题,让学生巩固所学知识。
引导学生进行拓展学习,分享自己的学习心得。
第六章:易语言编程环境6.1 教学目标让学生熟悉易语言的编程环境。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章文件操作(编程实例与技巧)void CS9_1View::OnInitialUpdate(){ CFormView::OnInitialUpdate();ResizeParentToFit();CS9_1Doc *pDoc=GetDocument(); //获取CS9_1Doc指针m_nYear=pDoc->m_nYear; //获取文档中的年份m_MonthList.SetCurSel(0); //选择一月m_nCurrentMonth=0; //当前是一月m_nMonthProduct=pDoc->m_Moth[0].nProduct; //一月产值m_sNote=pDoc->m_Moth[0].sNote; //一月备注m_sRiseRate="第一月无此值"; //一月的增值率CString str;str.Format("%d",pDoc->m_nTotalProduct);m_YearProduct.SetCaption(str); //调用CLabelControl设置标题显示年总产值UpdateData(FALSE); //更新显示}void CS9_1View::OnChangeMonthNote() 输入当月备注发生变化(EN_CHANGE){// TODO: If this is a RICHEDIT control, the control will not send this notification unless you override the CFormView::OnInitDialog() function and call CRichEditCtrl().SetEventMask() with the ENM_CHANGE flag ORed into the mask.CS9_1Doc *pDoc=GetDocument(); //获取CS9_1Doc指针UpdateData(); //获取最新输入数据//和文档中的数据比较是否有变化if(strcmp(pDoc->m_Moth[m_nCurrentMonth].sNote,m_sNote)){ //记录下新数据strcpy(pDoc->m_Month[m_nCurrnentMonth].sNote,m_sNote);pDoc->SetModifiedFlag(); //设置文档变化标志}}void CS9_1View::OnChangeMonthProduct(){ CS9_1Doc *pDoc=GetDocument(); //获取CS9_1Doc指针UpdateData(); //获取最新输入数据//判断数据是否改变if(pDoc->m_Moth[m_nCurrentMoth].nProduct!=m_nMonthProduct){ //改变总产值pDoc->m_nTotalProduct+=m_nMonthProduct-pDoc->m_Moth[m_nCurrentMonth].nProduct;CString str;str.Format("%d",pDoc->m_nTotalProduct);m_YearProduct.SetCaption(str); //调用CLabelControl设置标题函数显示年总产值//记录当月产值到CS9_1Doc中pDoc->m_Moth[m_nCurrentMonth].nProduct=m_nMonthProduct;//计算增长率if(m_nCurrentMonth==0) //是第一月m_sRiseRate="第一月无此值";else if(pDoc->m_Moth[m_nCurrentMonth-1].nProduct==0)//前一月产值0m_sRieRate="上月无产值";elsem_sRiseRate.Format("%.2f %%",(pDoc->m_Moth[m_nCurrentMonth].nProduct- pDoc->m_Moth[m_nCurrentMonth-1].nProduct)/(float)(pDoc->m_Moth[m_nCurrentMonth-1].nProduct)*100);pDoc->SetModifiedFlag(); //设置文档更改标志UpdateData(FALSE); // 更新显示}}void CS9_1View::OnChangeYear(){ CS9_1Doc *pDoc=GetDocument(); //获取CS9_1Doc指针UpdateData(); //获取最新输入if(pDoc->m_nYear!=m_nYear) //判断数据是否变化{ pDoc->m_nYear=m_nYear; //记录当月产值到CS9_1Doc中pDoc->SetModifiedFlag(); //设置文档更改标志}}void CS9_1View::OnDeltaposSpinYear(NMHDR* pNMHDR, LRESULT* pResult){ NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;//用spin控件更改年份UpdateData(); //调用它使m_nYear中是最新值if(pNMUpDown->iDelta>0)&&(m_nYear>0) //减小年份,并且不能小于0m_nYear--;else if(pNMUpDown->iDelta<0) //增加年份m_nYear++;else //非法输入{ AfxMessageBox("年份必须是非负整数");*pResult=0;return;}GetDocument()->m_nYear=m_nYear; //文档记录下新年份GetDocument()->SetModifiedFlag(); //设置文档更改标志UpdateData(FALSE);*pResult = 0;}void CS9_1View::OnSelchangeMonth(){ CS9_1Doc *pDoc=GetDocument(); //获取CS9_1Doc指针//因每个数据改动,自己都响应了变动的消息,所以不用做保存数据的工作//获得当前选择的月份并设置正确的显示m_nCurrentMonth=m_MonthList.GetCurSel();//计算这个月增长率if(m_nCurrentMonth==0) //是第一月m_sRiseRate="第一月无此值";else if(pDoc->m_Moth[m_nCurrentMonth-1].nProduct==0) //前一月产值0 m_sRiseRate="上月无产值";else //计算增长率m_sRiseRate.Format("%.2f%%",(pDoc->m_Moth[m_nCurrentMonth].nProduct- pDoc->m_Moth[m_nCrrentMonth-1].nProduct)/(float)(pDoc->m_Moth[m_nCurrentMonth-1].nProduct)*100);m_nMonthProduct=pDoc->m_Moth[m_nCurrentMonth].nProduct; //获得当月产值和备注m_sNote=pDoc->m_Moth[m_nCurrentMonth].sNote;UpdateData(FALSE);}void CS9_1Doc::Serialize(CArchive& ar){ if (ar.IsStoring()){ //实现存储写的代码ar<<m_nYear; //写入年份ar<<m_nTotalProduct; //写入年总产值for(int i=0;i<12;i++) //循环写入各月信息{ ar<<m_Month[i].nProduct; //这个月的产值ar.Write(m_Month[i].sNote,50); //这个月备注}}else{ //实现恢复读出的代码ar>>m_nYear; //读出年份ar>>m_nTotalProduct; //读出总产值int nTemp=0;for(int i=0;i<12;i++) //读出各月信息{ ar>>m_Month[i].nProduct; //这个月的产值if(m_Month[i].nProduct<0) //纠正负值m_Month[i].nProduct=-m_Month[i].nProduct;nTemp+=m_Month[i].nProduct; //临时统计各月累计总产值ar.Read(m_Month[i].sNote,50); //读出这个月的备注信息m_Month[i].sNote[49]=NULL; //确保字符串结束存在!}//进行检查工作if(nTemp!=m_nTotalProduct) //各月累计和总产值不符{ //提示AfxMessageBox("该报表文件中总产值与各月总和不符,\\n将总产值置为各月总和!");m_nTotalProduct=nTemp; //将总产值置为各月总和}}}void CS9_1Doc::OnCreateText(){CString str;CString filename=GetPathName(); //获取该文档当前的yrp文件名if(filename.IsEmpty()) //如果空(新建的文件未存之前的情况)filename=GetTitle()+".trp"; //从标题获得else //改扩展名filename=filename.Left(filename.GetLength()-3)+"trp";CStdioFile file;//用CStdioFile创建一个trp文件,注意使用的文件操作标志if(file.Open(filename,CFile::modeCreate|CFile::modeWrite|CFile::typeText==0)){ str="创建文件"+filename+"失败!";AfxMessageBox(str); // 创建失败,报告并返回return;}//实现起来很简单,这就开始写这些文本内容了!str.Format ("%d年产值报告\n\n",m_nYear); //年份file.WriteString(str); //用WriteString写入str.Format("总产值:%d元\n\n",m_nTotalProduct);file.WriteString(str); //写总产值文字信息str.Format("月份: 产值: 单位(元) 备注: \n");file.WriteString(str); //写各月报表头for(int i=0;i<12;i++){ //写月产值和备注str.Format ("%4d%13d %s\n", i+1,m_Month[i].nProduct,m_Month[i].sNote );file.WriteString(str);}/*好了,文件这就写完了,再作一些辅助工作. 设置文件结尾,因为新创建文件写完后大小就是自己写的内容的大小,所以这条语句不是必须的,只是为演示函数的用法*/file.SetLength(file.GetPosition());file.Close(); //关闭文件str="notepad"+filename;WinExec(str,SW_SHOW);}void CMainFrame::OnFromText(){ //选择文本报表文件CFileDialog dlg(TRUE,"trp",NULL,OFN_HIDEREADONL Y|OFN_OVERWRITEPROMPT,"文本报表文件(*.trp)|*.trp|所有文件(*,*)|*.*||",this);if(dlg.DoModal()==IDCANCEL)return;CString filename=dlg.GetPathName(); //获取选择的文本报表文件名CString str , strTemp;CFile file;//用CFile打开文本报表文件,注意打开的文件方式;if(file.Open(filename,CFile::modeRead)==0){ str="打开文件"+filename+"失败!";AfxMessageBox(str); //打开失败,报告并返回return;}//创建CArchive对象,创建方式和文件打开方式要一致CArchive ar(&file,CArchive::load);//定义yrp文件内容结构(和CS9_1Doc::Serialize的读写顺序一样struct YRP_STRUCT{int nYear; //年份int nTotalProduct; //年总产值struct{int nProduct; //月产值char sNote[50]; //月备注}Month[12]; //各个月信息}*pYrpMap; //定义使用报表文件映射的指针//定义句柄HANDLE hNewFile=INV ALID_HANDLE_V ALUE;HANDLE hMap=NULL;//获取yrp文件名,这里就使用的是同名的filename=filename.Left(filename.GetLength()-3)+"yrp";try{ //创建文件句柄,注意创建方式hNewFile=CreateFile(filename,GENERIC_WRITE|GENERIC_READ, 0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL);if(hNewFile==INV ALID_HANDLE_V ALUE)throw"创建报表文件失败!";//创建内存映射文件句柄,注意和文件的创建方式相一致hMap=CreateFileMapping(hNewFile,NULL,PAGE_READWRITE,0,sizeof(YRP_STRUCT),"yrp file");if(hMap==NULL)throw "创建内存映射文件失败!";//将文件视图映射到内存中,获得指针pYrpMap=(YRP_STRUCT*)MapViewOfFile(hMap,FILE_MAP_WRITE, 0,0,sizeof(YRP_STRUCT));if(pYrpMap==NULL)throw "文件视图映射时失败!";}catch(char *str){AfxMessageBox(str); //错误报告,并返回if(hMap!=NULL)CloseHandle(hMap);if(hNewFile!=INV ALID_HANDLE_V ALUE)CloseHandle(hNewFile);return;}//创建工作成功,开始读数据ar.ReadString(str);sscanf(str,"%d%s",&(pYrpMap->nYear),(LPCTSTR)strTemp); //年份ar.ReadString(str);ar.ReadString(str);sscanf(str,"%s%d%s",(LPCTSTR)strTemp,&(pYrpMap->nTotalProduct),(LPCTSTR)strTemp); //总产值ar.ReadString(str);ar.ReadString(str);for(int i=0;i<12;i++) //各个月的信息{ int nTemp;ar.ReadString(str);sscanf(str,"%d%d%s",&nTemp,&(pYrpMap->Month[i].nProduct), pYrpMap->Month[i].sNote); //没有判断月份的合法性}UnmapViewOfFile(pYrpMap); //解除映射CloseHandle(hMap); //关闭映射句柄CloseHandle(hNewFile); //关闭写的文件句柄ar.Close(); //关闭CArchivefile.Close(); //关闭读的文件//在程序中打开从文本报表中引入的报表文件if(AfxGetApp()->OpenDocumentFile(filename)==NULL)AfxMessageBox("打开与文本报表同名的报表文件失败!");}。