南昌大学C++实验报告(8)_第1页
南昌大学C++实验报告(8)_第2页
南昌大学C++实验报告(8)_第3页
南昌大学C++实验报告(8)_第4页
南昌大学C++实验报告(8)_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南昌大学实验报告 -(8)文件操作学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2018.1.5 实验成绩: 一、实验目的(1)了解文件和文件指针的概念。(2)掌握文件打开和关闭以及简单的文件操作函数的调用方法。(3)学会使用缓冲文件系统对文件进行简单操作。二、实验内容(1)编写函数filtercopy,将一个文件中的英文字母和数字复制到另一个文件中。(2)编写程序,将下表数据存入文件中,并根据输入的记录范围显示相应记录。NumNamebirthdayyearmonthday3010张改革196312231020李平平1972642030王纷纷1946119

2、3040胡天天19569211050卢齐全199022三、实验要求1、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤1.在编辑器中编写代码(实验用的是atom)。2.使用g+编译器对源代码进行编译,根据错误提示进行代码修改。3.运行程序,记录实验结果。五、实验数据及处理结果实验前的准备:首先新建两个文本文件,从第一个文件中读取数据,筛选相应的字符写入第二个文件。在第一个文件中写入“123hjk ./;”这些信息。然后查看写入的结果。在运行程序前,先查看文件中的内容(第一行),可以看到,文件中是空的,接着,编译写好的C+源代码,编译通过,没有错误信息提示。接着执行程序,执行

3、完成后,程序给出提示信息,拷贝成功,再次查看文件的内容,可以看到正确的结果#include#includevoid filtercopy(char *sf, char *df);int main() char path120 = ./src.txt; char path220 = ./obj.txt; filtercopy(path1, path2); std:coutCopying successfully= a & c = 0 & c =A& c = Z) ofile c; ofile n; /为了在Linx终端界面下友好显示,追加一个换行符,否则打印结果会有一个讨厌的百分号 ifile.

4、close(); ofile.close();-这个实验用C+完成,编写了一个过滤拷贝的函数,形参是两个文件路径的指针,根据这个路径指针可以定位到相应的文件,然后用文件流的.get()方法,获取单个字符,配合循环,将源文件中的每个字符进行扫描,符合条件的就写入到另外的文件中。最后关闭文件流,释放资源。第一二行是读写文件时的提示信息,第三行提示用户输入查询记录的编号,根据输入,在文件中读取数据进行查找相应的记录,若存在记录则则打印相应的全部信息,否则提示不存在这样的记录。#includestruct birthday int year; int month; int day;struct per

5、son int num; char name10; struct birthday birth_day;struct person students5 = 3010, 张改革, 1963, 12, 23, 1020, 李平平, 1972, 6, 4, 2030, 王纷纷, 1946, 11, 9, 3040, 胡天天, 1963, 9, 21, 1050, 卢齐全, 1990, 2, 2,;struct person temp5 = 0, , 0, 0, 0, 0, , 0, 0, 0, 0, , 0, 0, 0, 0, , 0, 0, 0, 0, , 0, 0, 0,;void writeR

6、ecords();void readRecords();void showInfo(struct person p);int main() writeRecords(); readRecords(); int n = 0; printf(Please input the number of person you wanna find:); scanf(%d,&n); int res = 0; for(int i = 0; i5; +i) if(tempi.num = n) showInfo(tempi); res = 1; break; if(res = 0) printf(No such r

7、ecord!n); return 0;void writeRecords() FILE *fp; fp = fopen(./records.dat,w); if(fp = NULL) printf(File open errorn); for(int i = 0; i5; +i) if(fwrite(&studentsi, sizeof(struct person), 1, fp) != 1) printf(File write errorn); break; fclose(fp); fp = NULL; printf(-Write data successfully!n);void read

8、Records() FILE *fp; fp = fopen(./records.dat,r); if(fp = NULL) printf(File open errorn); for(int i = 0; i5; +i) int res = fread(&tempi,sizeof(struct person), 1, fp); if(res != 1) printf(File read error!n); break; fclose(fp); fp = NULL; printf(-Read data successfully!n);void showInfo(struct person p)

9、 printf(%d %s %d %d %dn, p.num, , p.birth_day.year, p.birth_day.month, p.birth_day.day);这个实验用C语言实现,将一个结构体数组写入文件,以二进制的形式写入,没有采用相应的编码规则,所以直接查看文件内容会出现乱码。然后再从文件中读取这些记录,存入定义的全局变量temp结构体数组中,提示用户输入编号,根据编号在结构体中进行查找记录,若命中记录,则调用显示信息的函数,将这个记录的信息打印出来。否则给出记录不存在的提示。(直接查看文件出现的乱码情况)六、实验体会或对改进实验的建议这次实验学习了用C和C+进行文件读写的操做,第一个实验用C+语言编写,第二个采用C语言,将两者的操作都体验了一遍。之前写过的所有程序都是要在程序运行是动态输入的,如果输入的数据量很大,或者输入了错误的数据,将会十分影响程序的效率。这时,文件的优势就体现出来了:在程序运行之前就可以提前将数据准备好,编写相应的读取数据函数就可以把数据一次性导入到程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论