程序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); /*关闭目的文件*/ } 程序2 模拟DOS命令下的COPY命令,在DOS状态下输入命令行,以实现将一个已存在的文本文件中的内容全部复制到新文本文件中,利用文本编辑软件查看文件内容,验证程序执行结果。 源程序: /*源文件名:mycopy.c*/ #include #include int CopyFile(const char *srcName, const char *dstName); main(int argc, char *argv[]) { char ch; if (argc != 3) { printf("too few parameters!\\n"); exit(0); } if (CopyFile(argv[1], argv[2])) /*文件复制*/ { 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) fclose(fpDst); return rval; } 程序3 根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将第一个文本文件的内容追加到第二个文本文件的原内容之后,利用文本编辑软件查看文件内容,验证程序执行结果。 源程序: #include #define MAXLEN 80 int AppendFile(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 (AppendFile(srcFilename, dstFilename)) /*文件追加*/ { printf("Append succeed.\\n"); } else { perror("Append failed"); } } /* 函数功能:把srcName文件内容复制到dstName 函数入口参数:文件路径 函数返回值:非0值表示复制成功,否则表示出错 */ int AppendFile(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,"a")) == 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) fclose(fpDst); return rval; } 程序4 根据提示从键盘输入一个已存在的文本文件的完整文件名,再输入另一个已存在的文本文件的完整文件名,然后将源文本文件的内容追加到目的文本文件的原内容之后,并在程序运行过程中显示源文件和目的文件中的文件内容,以此来验证程序执行结果。 源程序: #include #define MAXLEN 80 int AppendFile(const char* srcName, const char* dstName); int DisplayFile(const char* srcName); main() { char srcFilename[MAXLEN]; /* 源文件名 */ char dstFilename[MAXLEN]; /* 目标文件名 */ printf("Input source filename:"); scanf("%s", srcFilename); /*输入源文件名*/ printf("Input destination filename:"); scanf("%s", dstFilename); /*输入目标文件名*/ if(!DisplayFile(srcFilename)) perror("Display source file failed"); if(!DisplayFile(dstFilename)) perror("Display destination file failed"); if (AppendFile(srcFilename, dstFilename)) /*文件追加*/ { printf("Append succeed.\\n"); DisplayFile(dstFilename); } else { perror("Append failed"); } } /* 函数功能:把srcName文件内容复制到dstName 函数入口参数:文件路径 函数返回值:非0值表示复制成功,否则表示出错 */ int AppendFile(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,"a")) == 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) fclose(fpDst); return rval; } /* 函数功能:显示srcName文件内容 函数入口参数:文件路径 函数返回值:非0值表示显示成功,否则表示出错 */ int DisplayFile(const char *srcName) { FILE *fpSrc = NULL; int ch, rval = 1; if ((fpSrc = fopen(srcName,"r")) == NULL) /*只读方式打开源文件*/ goto ERROR; /* 文件显示 */ printf("File %s content:\\n", srcName); while ((ch=fgetc(fpSrc)) != EOF) { if (fputc(ch, stdout) == EOF) goto ERROR; } printf("\\n"); goto EXIT; ERROR: rval = 0; EXIT: if (fpSrc != NULL) fclose(fpSrc); return rval; }