首先,先准备好要复制的文件,将其放在源程序共同的目录下。
如:文件名为:filecpy.c
内容如下:
#include<stdio.h>
void main(void)
{
printf("这是一个将要被复制的文件\n");
}
其次,写代码。如下:
https://code.csdn.net/snippets/146748#include<stdio.h>
void main(void)
{
//1、定义文件指针、变量等
FILE *pf1 ;
FILE *pf2 ;
char ch ;
//2、打开文件
pf1 = fopen("filecpy.c","rt"); //以“读--text”的格式打开“要被复制的文件”,并将函数返回值赋值给对应的文件指针变量
pf2 = fopen("filecarrier.c","wt"); //以“写--text”的格式打开“目标载体文件”,并将函数返回值赋值给对应的文件指针变量
//3、以字符为单位进行复制文件
while(1)
{
ch = fgetc(pf1); //从文件“filecpy.c”的内部指针‘pf1’处获取一个字符,并赋值给 ch ,文件指针pf1指向该文件中的下一个字符的起始位置
if(feof(pf1)) //判断,如果文件指针是否已经指向了文件的结尾处,若是,则结束复制(文件复制完成)
{
break; //跳出while(1)循环体
}
fputc(ch , pf2); //将字符变量'ch'的内容写到文件指针pf2所指向的位置,同时pf2指向给文件中下一个字符的起始位置
}
//4、关闭文件
fclose(pf1); //关闭文件"filecpy.c"
fclose(pf2); //关闭文件"filecarrier.c"
}
代码执行结果:
该文件夹下多了一个名为 filecarrier.c 的文件。(在程序执行的过程中产生的,并且已经将 filecpy.c 的内女复制到了该文件中),如下:
文件 filecarrier.c
#include<stdio.h>
void main(void)
{
printf("这是一个将要被复制的文件\n");
}
注意:文件一旦关闭,再次打开此文件时,文件的指针是指向该文件内部的起始的位置
/**************************************************************************************************
* 功能:文件复制。将文件自身复制到当前文件夹的子文件夹下的.txt文档中保存。
* 目的:熟悉文件复制的过程,掌握函数 fgetc();fputc();的具体使用方法
**************************************************************************************************/
#include<stdio.h>
void main(void)
{
//1、定义文件指针和变量
FILE *pf1 ;
FILE *pf2 ;
char ch ;
//2、打开文件
pf1 = fopen("cpyself.c","rt");
pf2 = fopen("./copyto/targetfile.txt","wt"); //将文件复制到本文件夹下的子文件夹内部的文件中
//3、复制文件
while(1)
{
ch = fgetc(pf1); //从'文件1'中复制一个字符给 ch
if(feof(pf1)) //判断是否到达文件的结尾,若是:跳出循环,结束复制
{
break;
}
fputc(ch , pf2); //将 ch 中的文件复制到'文件2'中文件指针pf2所指向的位置,之后pf2指向下一个字节的起始位置
}
//4、关闭文件
fclose(pf1);
fclose(pf2);
}
在程序执行之前,目标文件夹下为空,即还未得到复制后的"targetfile.txt"文件,如下图:
程序执行后,目标文件夹下生成了.txt格式的文件副本,如下图:
打开targetfile.txt文件,你会发现,我们的程序执行后就将原 .c 文件的内容与分不动的复制到了此文件中,结果如下图:
//若想将文件复制到其他文件夹下,只需将第2步“打开文件”中的
//打开文件
pf1 = fopen("cpyself.c","rt");
pf2 = fopen("./copyto/targetfile.txt","wt"); //将文件复制到本文件夹下的子文件夹内部的文件中
//改变路径即可:(以UBUNTU中复制到 "media盘" 下的 "IFLE文件夹"下的"targetfile.txt"文件中为例)
pf1 = fopen("cpyself.c","rt"); //要被复制的文件的 "/地址/文件名"
pf2 = fopen("/media/FILE/targetfile.txt","wt"); //复制到目标文件: "/地址/文件名"
实质:该变文件打开和输出的路径。
结果如下:
执行程序前,如下:
执行程序后,如下:
打开此文件察看结果,如下: