实验十 文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档