实验十 文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十文件
实验时间:年月日
【实验目的】
1、了解文件类型及文件指针。
2、学会文件基本操作,如打开、关闭、读、写等。
3、结合一定的算法,掌握比较复杂的文件操作方法。
【实验内容】
1、文件的基本操作;
2、fopen函数的使用及其各参数的含义,fclose函数的使用。
【实验步骤】
编程题:
文件复制与追加
1、根据程序提示从键盘输入一个已存在的文本文件的完整文件名,再输入一个新文本文件的完整文件名,然后将已存在的文本文件中的内容全部复制到新文本文件中,利用文本编辑软件,通过查看文件内容验证程序执行结果。
2、模拟DOS命令下的COPY命令,在DOS状态下输入命令行,以实现将一个已存在的文本文件中的内容全部复制到新文本文件中,利用文本编辑软件查看文件内容,验证程序执行结果。
3、根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将第一个文本文件的内容追加到第二个文本文件的原内容之后,利用文本编辑软件查看文件内容,验证程序执行结果。
4、根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将源文本文件的内容追加到目的文本文件的原内容之后,并在程序运行过程中显示源文件和目的文件中的文件内容,以此来验证程序执行结果。
三、分析与思考
如果要复制的文件内容不是用函数fputc()写入的字符,而是用函数fprintf()写入的格式化数据文件,那么如何正确读出该文件中的格式化数据呢?还能用本实验中的程序实现文件的拷贝吗?请读者自己编程验证。
解答:
1、#include
#include
#define MAXLEN 80
main()
{
FILE *fpSrc = NULL;
FILE *fpDst = NULL;
char ch;
char srcFilename[MAXLEN]; /* 源文件名*/
char dstFilename[MAXLEN]; /* 目标文件名*/
printf("Input source filename:");
scanf("%s", srcFilename); /*输入源文件名*/
if ((fpSrc = fopen(srcFilename,"r")) == NULL) /*只读方式打开源文件*/
{
printf("can't open file %s!\n", srcFilename);
exit(0);
}
printf("Input destination filename:");
scanf("%s", dstFilename); /*输入目标文件名*/
if ((fpDst = fopen(dstFilename,"w")) == NULL) /*只写方式打开目标文件*/ {
printf("can't open file %s!\n", dstFilename);
exit(0);
}
/*文件复制*/
while ((ch = fgetc(fpSrc)) != EOF)
{
if (fputc(ch, fpDst) == EOF)
{
printf("Copy failed!");
exit(0);
}
}
printf("Copy succeed.\n");
fclose(fpSrc); /*关闭源文件*/
fclose(fpDst); /*关闭目的文件*/
}
1、
#include
#define MAXLEN 80
int CopyFile(const char *srcName, const char *dstName);
main()
{
char srcFilename[MAXLEN]; /* 源文件名*/
char dstFilename[MAXLEN]; /* 目标文件名*/
printf("Input source filename:");
scanf("%s", srcFilename); /*输入源文件名*/
printf("Input destination filename:");
scanf("%s", dstFilename); /*输入目标文件名*/
if (CopyFile(srcFilename, dstFilename)) /*文件复制*/
{
printf("Copy succeed.\n");
}
else
{
perror("Copy failed");
}
}
/* 函数功能:把srcName文件内容复制到dstName文件中
函数入口参数:文件路径
函数返回值:非0值表示复制成功,否则表示出错
*/
int CopyFile(const char *srcName, const char *dstName)
{
FILE *fpSrc = NULL;
FILE *fpDst = NULL;
int ch, rval = 1;
if ((fpSrc = fopen(srcName,"r")) == NULL) /*只读方式打开源文件*/ goto ERROR;
if ((fpDst = fopen(dstName,"w")) == NULL) /*只写方式打开目标文件*/ goto ERROR;
/* 复制文件*/
while ((ch=fgetc(fpSrc)) != EOF)
{
if (fputc(ch, fpDst) == EOF)
goto ERROR;
}
fflush(fpDst); /* 确保存盘*/
goto EXIT;
ERROR:
rval = 0;
EXIT:
if (fpSrc != NULL)
fclose(fpSrc);
if (fpDst != NULL)