文件的应用
一、实验目的
1.熟悉文件型指针的定义和使用方法。
2.熟悉系统函数中有关文件处理函数的调用格式及功能。
3.掌握文件处理程序的一般设计方法。
4.熟悉带参数的主函数设计方法及其程序运行方法。
二、预习要求
1.复习文件型指针的定义方法及文件的打开与关闭函数的调用格式与功能。
2.复习关于文件读写函数(读写字符、读写字符串、读写数据块、格式读写)的调用格式与基本功能。
3.复习关于文件定位函数、文件尾测试函数、错误测试函数的使用。
4.复习带参数的主函数设计方法。
三、实验准备
【问题一】文件处理实用程序设计(-)
(1)用C语言编写一个名为“creat_f”的函数,将键盘上输入的30个字符写入磁盘文件中。磁盘文件名存放在函数参数“f_name[13]”中。
(2)用C语言编写主函数,输人磁盘文件名。然后调用上述函数建立磁盘文件,再显示该文件中的内容。
【待填充的源程序参考清单】
#include"stdio.h"
void creat_f(f_name)
char f_name[13];
{ ______________________;
int i;
if((fp=fopen(_____________________,"w"))==NULL)
{ printf("file can't open!\n");
exit(0);
}
printf("input contents of file(<=30 character)\n");
for(i=0;i<=30;i++)
fputc(______________________);
fclose(fp);
return;
}
main()
{ FILE *fp1;
int i;
char f_name[13];
printf("input file name\n");
scanf("%s",f name);
creat_f(_______________________);
if((fp1=fopen(f_name,"r"))== NULL)
{printf("file can't Open!\n”);
exit(0);
}
printf("output contents of file:\n");
for(i=0;i<=30;i++)
putchar(_____________________________);
printf("\n");
______________________________;
}
【问题二】文件处理实用程序设计(二)
(1)用C语言编写一个复制磁盘文件的名为“copy_f”的函数,规定源文件名存放在参数
“f_name1”中,目标文件名存放在参数“f_name2”中。
(2)用C语言编写主函数,调用上述函数,复制问题一中建立的磁盘文件,然后再显示复制后的磁盘文件内容。源文件名和目标文件名从键盘上输入。
【待填充的源程序参考清单】
#include"stdio.h"
void copy_f(f_name1,f_name2)
char f_name[13],f_name2[13];
{ FILE *fp1,*fp2;
if((fpl=____________________)==NULL)
{ printf("file can't open!\n");
exit(0);
}
if((fp2=_____________________)==NULL)
{ printf("file can't open!\n");
exit(0);
}
while(!feof(fp1))
fputc(______________________);
fclose(fp1);
fclose(fp2);
return;
}
main()
{ FILE *fp;
char f name1[13],f name2[13];
printf("inpet source file name\n");
scanf("%s",f_name1);
printf("input target file name\n");
scanf("%s",f_name2);
copy_f(______________________);
if((fp=fopen(f_name2,"r"))==NULL)
{ printf("file can't Open!\n");
exit(0);
}
printf("output contents of target file:\n");
while(________________________)
_________________(fgetc(fp));
printf("\n");
fclose(fp);
}
【问题三】带参数的主函数和文件处理实用程序设计(-)
编一个带参数的主函数,将某个文本文件(可以选取某个C语言的源程序文件)加密,加密的方法是将每个字符对应的一字节值高4位求反,低4位不变。文本文件名随命令行的输入而输入。
【待填充的源程序参考清单】
#include"stdio.h"
main(argc,argv)
int argc;
char *argv[];
{ FILE *fp;
char oh;
if((fp=___________________________________)== NULL)
{ printf("file can't open!\n");
exit(0);
}
ch=fgetc(fp); /*去掉文件头的标记符号,不处理*/
while(!feof(fp))
{ ch=_______________________;
if(ch==-1) /*如果读取到文件尾的标记符号*/
break; /*(该标记符号值为-1),则退出循环*/
ch=____________________;
fseek(fp,-1L,1); /*退回到刚刚读取字符的位置上*/
____________________;
fseek(fp,OL,1);
}
fclose(fp);
}
【问题四】带参数的主函数和文件处理实用程序设计(二)
编一个程序,将问题三中加密的文本文件解密后显示在0.屏幕上。文本文件名由键盘上输入。
【自己编写的源程序清单】
方法一:用fgetc()函数每次读取单个字符解密后显示,直到文件结束。
方法二:用fread()函数每次读取单个字符解密后显示,直到文件结束。
在方法一的程序清单基础上进行修改获得方法二的程序清单。
四、实验步骤
【启动Turbo-c,并始实验】
1.启动计算机,进入DOS操作系统;启动Turbo-C,进入主菜单。
2.选取“File”菜单条的下拉菜单项“New”,进入源程序的编辑状态。
【问题一程序的调试与运行】
3.输入问题一中给出的、实验准备阶段已经填充好的源程序参考清单。
4.选取“File”菜单条的下拉菜单项“Save”,将源程序存盘。
【热键】<F2>
5.选取“Compile”菜单条的下拉菜单项“Compile to OBJ”,对源程序进行编译。
【热键】 <Alt>+<F9>
6.查阅并分析系统给出的语法错误信息,重新编辑修改源程序,转第4步。反复执行,直到源程序语法没有错误,转下一步。
7.选取“Compile”菜单条的下拉菜单项“Make EXE file”,对源程序进行连接。
【热键】<F9>
若连接中有错误,重新编辑修改源程序,转第4步。
若没有错误,转下一步。
8.选取“Run”菜单条的下拉菜单项“Run”,运行目标程序。
【热键】<Ctrl>+<F9>
9.选取“Run”菜单条的下拉菜单项“User Screen”,查看任行结果。
【热键】 <Alt>+<F5>
看后接任一键返回Turbo-C的主菜单。
若运行结果有错,分析错误原因,重新编辑修改源程序,转第4步。
若运行结果正确,转下一步。
10.记录正确的程序清单。
【问题二程序的调试与运行】
11.选取“File”菜单条的下拉菜单项“New”,进入源程序的编辑状态。
12.输入问题二中给出的、实验准备阶段已经填充好的源程序参考清单。
13.重复前面的第4步~第9步,编译、连接、运行、调试问题二的程序。
14.记录正确的程序清单。
【问题三程序的调试与运行】
15.选取“File”菜单条的下拉菜单项“New”,进入源程序的编辑状态。
16.输人问题三中给出的、实验准备阶段已经填充好的源程序参考清单。
17重复前面的第4步~第9步,编译、连接、运行、调试问题三的程序。
18.记录正确的程序清单。
【问题四(法一)程序的调试与运行】
19.选取“File”菜单条的下拉菜单项“New”,进入源程序的编辑状态。
20.输入自己编写的、解决问题四(法一)的源程序清单。
21.重复前面的第4步~第9步,编译、连接、运行、调试问题四(法一)的程序。
22.记录正确的程序清单。
【问题四(法二)程序的调试与运行】
23.按照实验准备阶段的修改方案,修改已经调试成功的问题四(法一)的程序清单,成为用法二解决问题四的程序清单。
24.重复前面的第4步~第9步,编译、连接、运行、调试问题四(法二)的程序。
25.记录正确的程序清单。
【退出Turbo-C,结束本次实验]
26.选取“File”菜单条的下拉菜单项“Quit”,退出Turbo-C,返回操作系统。
【热键】< Alt>+X
27.分析实验过程,总结实验结果。