1. 程式人生 > >將'檔案1'的內容複製到'檔案2'中

將'檔案1'的內容複製到'檔案2'中

首先,先準備好要複製的檔案,將其放在源程式共同的目錄下。

如:檔名為: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"); //複製到目標檔案: "/地址/檔名"

實質:該變檔案開啟和輸出的路徑。

結果如下:

執行程式前,如下:


執行程式後,如下:

開啟此檔案察看結果,如下: