2014湖南大学c语言实验题目及其答案 (5)

上传人:小** 文档编号:90921454 上传时间:2019-06-20 格式:PDF 页数:11 大小:165.97KB
返回 下载 相关 举报
2014湖南大学c语言实验题目及其答案 (5)_第1页
第1页 / 共11页
2014湖南大学c语言实验题目及其答案 (5)_第2页
第2页 / 共11页
2014湖南大学c语言实验题目及其答案 (5)_第3页
第3页 / 共11页
2014湖南大学c语言实验题目及其答案 (5)_第4页
第4页 / 共11页
2014湖南大学c语言实验题目及其答案 (5)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《2014湖南大学c语言实验题目及其答案 (5)》由会员分享,可在线阅读,更多相关《2014湖南大学c语言实验题目及其答案 (5)(11页珍藏版)》请在金锄头文库上搜索。

1、第五章文件 一目的和要求一目的和要求 1、掌握文件的基本概念,如:文件的输入/输出的基本概念、文件的两种组织形式、 文件操作的一般步骤等等。 2、学习文件操作的基本算法,如:读/写、追加等。 3、了解文件的读写方式,如:顺序读写文件、随机读写文件。 4、了解如何将不同的数据(如:数组数据、结构体数据)存入或读出文件的方法。 二相关知识二相关知识 1、文件概述 文件的组织形式 C 把文件看作是字符(字节)的序列,即由一个一个字符数据顺序组成的。根据数 据的组织形式,可分为 ASCII 文件和二进制文件。 ASCII 文件又称文本文件。它的每一个字节放一个 ASCII 代码(代表一个字符) 。 因

2、而便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且化 费转换时间。 2二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存 放。但一个字节并不对应一个字符。不能直接输出字符形式。 文件的处理方法 1缓冲文件系统:系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘 去。 如果从磁盘向内存读入数据, 则从磁盘文件中将一批数据输入到内存缓冲区 (充 满缓冲区) ,然后再从缓冲区逐个地将数据送到程序数据区(给程序变量) 。 用缓冲文件系统进行的输入输出又称为高级(高层)磁盘输入输出。 非缓冲

3、文件系统:系统不自动开辟缓冲区,系统直接对磁盘写或读数据。 用非缓冲文件系统进行的输入输出又称为低级(低层)磁盘输入输出系统。 文件的存取方式 C 语言对文件的操作都是通过文件处理函数实现的。用文件处理函数存取文件的方 式有两种,一种是顺序存取(顺序文件) ,另一种是随机存取(随机文件) 。 设备文件 由于计算机中的输入/输出设备的作用也是输入输出数据, 所以把输入/输出设备也看 成文件,称为设备文件。 微机上配备的常用输入设备是键盘,称标准输入设备;常用输出设备是显示器,称 标准输出设备;还有一个专用于输出错误信息的标准错误输出设备,也是显示器。 2、文件型指针 C 语言规定文件类型是一种特

4、殊的“结构型”FILE,对这个结构类型 FILE,系统已 经在头文件“stdio.h”中进行了定义。 3、操作文件的常用函数 打开文件函数 open() 关闭文件函数 close() 文件尾测试函数 feof() 字符读/写函数 fgetc()/fputc() 字符串读/写函数 fgets()/fputs() 数据读/写函数 fread()/fwrite() 格式读/写函数 fscanf()/fprintf() 文件头定位函数 rewind() 文件随机定位函数 fseek() 10错误测试函数 ferror() 三实验练习实验练习 实验练习实验练习 1 1:编写程序,模拟 DOS 的 typ

5、e 命令,显示文本文件的内容。 本练习要求在封闭式实验课中在助教或者讲师的指导下完成。 本练习分成 6 个部分: 1 实验目的 2 问题描述 3 事例输出 4 程序模板 5 问题解答提示 6 后续问题和任务 程序模板是完整的、可实际运行的 C 程序,其中关键的一行或者多行代码已经 替换为注释。请先阅读问题描述,分析事例输出;然后研究模板的代码。参考问题 解答提示,用 C 代码替换/* */注释。编译并执行程序,并将输出结果与提供的事例 输出进行比较。然后回答强化练习。 实验目的: 本实验旨在巩固学生对文件概念的理解,增强程序设计能力。在这个实验中, 学生将练习: 用包含命令将头文件”stdli

6、b.h”包含进来。 设置带参数的主函数。 设置文件类型的指针 fp。 if 语句判断,若命令行的参数少于 2 个,则输出“No file name.“,退出程序。 用 fopen()函数以读方式打开文件,若打不开,则输出“No such file.“,退出程 序。 利用循环语句,若没有读到文件结束 EOF,依次从文件中读出字符并显示在屏 幕上。 关闭文件。 在强化练习中,学生将练习: 设置无参的主函数,显示指定文件。 利用 fgets()函数读取文件中的字符串,完成类似功能。 利用 fgetc()函数和 fputc()函数,模拟 DOS 的 copy 命令。 利用 fgets()函数和 fpu

7、ts()函数,模拟 DOS 的 copy 命令。 问题描述 编写程序,用带参数的主函数接收从命令行中传来的文件,将该文件以读方式 打开,然后用 fgetc( )函数将字符一个个读出,显示在屏幕上。 示例输出 D: pro10_1pro_1.c #include “stdio.h” void main( ) int a=3, b=4, c; c=a+b; printf(“c=%dn”, c); 注:设有文件 pro_1.c,其内容为: #include “stdio.h” void main( ) int a=3, b=4, c; c=a+b; printf(“c=%dn”, c); 程序模板(

8、设此程序的程序名为:pro10_1.c) #include “stdio.h“ #include “stdlib.h“ void main(_, _) /*定义文件类型的指针 fp*/ char ch; if(argc=a char name10; char sex; int age; stuSIZE,out; void main( ) FILE *fp; int i; for(i=0;iSIZE;i+) printf(“Input student %d:“,i+1); /*从键盘输入学生的一组数据*/ if(以二进制写方式打开文件 student.dat,若能打开,则使 文件指针 fp 指向

9、该文件的信息区) printf(“Cannot open file.n“); abort( ); for(i=0;iSIZE;i+) /*用 fwrite()函数将学生的记录写入文件 student.dat 中*/ fclose(fp); fp=fopen(“student.dat“, “rb“); printf(“NoNameSexAgen“); for(i=0; iSIZE; i+) /*用 fread()函数,从文件 student.dat 中读取一条记录存入 out 中*/ printf(“%-5s %-10s %c %dn“, out.num,out.name, out.sex, o

10、ut.age); /*关闭文件*/ 问题解答提示 1二进制文件是由一串与内存存放形式相同的字节组成。它不需要转换就从内存送 到文件中存放起来。 2打开文件函数 fopen()中的第二个参数是文件打开方式。是“wb“时是二进制写方 式打开文件,“rb“时是二进制读方式打开文件。 3fread()函数和 fwrite()函数的第一个参数是读取数据暂存区的地址,要用取地址运 算符 char name10; char sex; int age; out; void main() FILE *fp; int i; if(fp=fopen(“student.dat“,“rb“)=NULL) printf(

11、“Cannot open file.n“); /*退出程序*/ printf(“请输入学生的序号:“); scanf(“%d“, /*将文件指针重定位至文件的开头处*/ /*将文件指针定位在待查找的记录上*/ fread( printf(“%s %s %c %dn“,out.num,out.name,out.sex,out.age); /*关闭文件*/ 问题解答提示 1若不知文件指针指向何处,用重定位函数,将文件指针 fp 重新指向文件的开头 处。 2fseek()函数中的第三个参数是移动文件指针时的起始位置。为 0 时,表示文件指 针在文件的开始处;为 1 时,表示文件指针在当前文件指针位置

12、;为 2 时,表示文 件指针在文件尾。 3 fseek()函数中的第二个参数是移动到距起始位置为多少条记录的地方, 即偏离量。 计算方法是:(i-1)* sizeof(struct student)。第一条记录的偏离量是 0,所以要 i-1。 4若偏离量大于 0,表示文件指针向文件尾移动;若偏离量小于 0,表示文件指针 向文件头移动 5如果在实验中碰到任何问题,请向实验老师寻求帮助。 强化练习 1重新编写程序,输出序号为偶数的学生的记录。 2重新编写程序,按逆序输出学生的记录。 10.4 综合练习综合练习 1编写程序,将 33126 之间的所有字符写入文件 chars.txt 中。 #incl

13、ude “stdio.h“ #include “stdlib.h“ void main() FILE *fp; int ch; if(fp=fopen(“chars.txt“,“w“)=NULL) printf(“file open error!n“); exit(0); for(ch=33;ch=126;ch+) fputc(ch,fp); fclose(fp); 2在磁盘文件上存有 10 个学生的数据。要求将第 1、3、5、7、9 个学生数据输入 计算机,并在屏幕上显示出来。 #include “stdio.h“ struct student char name10; int num; int age; char sex; stud10; void main() int i; FILE *fp; if(fp=fopen(“stud.dat“,“rb“)=NULL) printf(“Cannot open file!n“); exit(0); for(i=0;i10;i+=2) fseek(fp,i*sizeof(struct student),0); fread( printf(“%s%d%d%cn“,studi.name, studi.num,studi.age,studi.sex); fclose(fp);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号