將'檔案1'的內容複製到'檔案2'中
阿新 • • 發佈:2019-02-12
首先,先準備好要複製的檔案,將其放在源程式共同的目錄下。
如:檔名為: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"); //複製到目標檔案: "/地址/檔名"
實質:該變檔案開啟和輸出的路徑。
結果如下:
執行程式前,如下:
執行程式後,如下:
開啟此檔案察看結果,如下: