将文件中的内容从一个文件拷贝到另外一个文件

1 题目

功能:将文件中的内容从一个文件拷贝到另外一个文件

描述:将上一个案例中的ex043_file.dat 赋值内容到 ex044_file.data

2 思路

1、在访问磁盘文件时,是逐个字符(字节)进行的,为了知道当前访问到第几个字节,系统用 "文件读写位置标记" 来表示当前所访问的位置。开始时“文件读写位置标记”指向第1个字节, 每访问完一个字节后,当前读写位置就指向下一个字节,即当前读写位置自动后移。

2、为了知道对文件的访问是否完成,只须看文件读写位置是否移到文件的末尾。用feof函数可以检查到"文件读写位置标记"是否移到文件的末尾,即磁盘文件是否结束。程序第 26 行中的feof(in)是检查in所指向的文件是否结束。如果是,则函数值为1(真),否则为0(假),也就是“ !feof(in) ”为真,在while循环中检査“!feof(in)”为真,就执行循环体。

3、运行结果是将file.dat文件中的内容复制到file2.dat中去。打开这两个文件,可以看到filel. dat 和 file2. dat 的内容都是:

This is the first message

copy to another file

4、以上程序是按文本文件方式处理的。也可以用此程序来复制一个二进制文件,只须将两个fopen函数中的“r”和“w”分别改为“rb”和“wb”即可。

5、C 系统已把fputc和fgetc函数定义为宏名putc和getc:

# define putc(ch, fp) fputc(ch, fp)

# define getc(fp) fgetc(fp)

这是在 <stdio.h> 中定义的。因此,在程序中用putc和fputc作用是一样的,用getc和fgetc作用是一样的。在使用的形式上,可以把它们当作相同的函数对待。

3 代码

#include <stdio.h>

#include <stdlib.h>

/**

功能:将文件中的内容从一个文件拷贝到另外一个文件

描述:将上一个案例中的ex043_file.dat 赋值内容到 ex044_file.dat

**/

intmain(intargc,charconst*argv[]) {

  FILE*in,*out;                  // 指向文件的变量

  charch,infile[20],outfile[20]; // 定义的两个字符数组,分别存放两个数据文件名

  printf("输入读入文件的名称(ex043_file.dat):");

  scanf("%s",infile);              // 输入第一个要读取文件的文件名

  printf("输入输出文件的名称(ex044_file.dat):");

  scanf("%s",outfile);            // 输入第一个要读取文件的文件名


  if((in=fopen(infile,"r"))==NULL) {  // 打卡输入文件

    printf("无法打开输入文件..\n");

    exit(0);

  }

  if((out=fopen(outfile,"w"))==NULL) {  // 打卡输出文件

    printf("无法打开输出文件..\n");

    exit(0);

  }

  while(!feof(in)) {          // 如果未遇到输入文件的结束标志,每次访问完一个字节后自动指向下一个字节

    ch=fgetc(in);          // 从输入文件中读取一个

    fputc(ch,out);          // 将 ch 写到 outfile 中

    putchar(ch);            // 显示到屏幕上

  }

  putchar(10);                // 最后进行换行

  fclose(in);                // 关闭输入文件

  fclose(out);                // 关闭输出文件

  return0;

}

示例结果:

$ gccex044.c-odemo

$ ./demo

输入读入文件的名称(ex043_file.dat):ex043_file.dat

输入输出文件的名称(ex044_file.dat):ex044_file.dat

This is the first message

copy to another file

原来文件中的内容:

This is the first message copy to another file

赋值过去的文件内容:

This is the first message

copy to another file

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容