C語言復制文件主要由三種辦法,你可以根據(jù)自己的知識選用一個
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了閩侯免費建站歡迎大家使用!
方法1)利用C語言的二進制讀寫函數(shù)
自己用fopen打開源文件和目標文件,然后用循環(huán)讀寫實現(xiàn)復制
方法2)利用操作系統(tǒng)的文件復制函數(shù)
例如Windows就有如下API函數(shù)可以復制文件
BOOL CopyFile(
LPCTSTR lpExistingFileName, // name of an existing file
LPCTSTR lpNewFileName, // name of new file
BOOL bFailIfExists // operation if file exists
);
第一個參數(shù)是用來存放當前要處理文件的路徑。
第二個參數(shù)是用來存放用戶指定的新路徑。
第三個參數(shù)它是用來判斷用戶指定的新路徑是否已經(jīng)存在要存放的路徑,如果為TRUE,則新路徑中已經(jīng)存在該文件了,該函數(shù)調(diào)用失敗,否則就調(diào)用成功。
方法3:C語言調(diào)用操作系統(tǒng)的copy命令
首先#includestdlib.h
然后 程序中 調(diào)用 system(“這里寫 copy的完整命令”);
C語言實現(xiàn)一個簡單的文件復制功能,Linux環(huán)境下。
思路步驟:(下代碼最重要的邏輯步驟清晰)
第一步:打開源文件(要復制的文件),打開文件的方式以讀的方式就可以了。
Linux C打開文件的庫函數(shù)有:int open(const char *pathname,int flags),int open(const char *pathname,mode_t mode),以及 FILE *fopen(const char *path,const char *mode),FILE *fdopen(int fd,const char *mode),這幾個函數(shù),具體的使用方法就查看manual就可以了。
第二步:創(chuàng)建目標文件,所用的函數(shù)也是上面那幾個。
第三步:讀取文件。庫函數(shù)有:size_t read(int fd,void *buf,size_t count),
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)
第三步:寫入目標文件。用的庫函數(shù):size_t write(int fd,void *buf,size_t count),
size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE *stream)
第四步:關閉文件。庫函數(shù):int fclose(FILE *fp) ,int close(int fd)
思路步驟就是這樣子的了。下面是具體的代碼實現(xiàn)。
#include
#include
#include
#include
#include
#include
int main(int argc,char *argv[])
{
int fd_source_file,fd_copy_file;//用接受int open()函數(shù)返回的值
//FILE *fp_source_file,*fp_copy_file;//如果用FILE *fopen()函數(shù)的話
int size_read,size_write;
char buf[1024];
char copy_file_name[50];
//檢查參數(shù)的輸入
if(argc3)
{
printf("usage: ./a.out source_file_path copy_file_path\n");
exit(1);
}
//復制目標文件名
strcpy(copy_file_name,argv[2]);
//打開源文件
if( (fd_source_file=open(argv[1],O_RDONLY,00744))0 )
{
perror("open source file error");
exit(1);
}
//創(chuàng)建目標文件
if( (fd_copy_file=open(argv[1],O_CREAT|O_RDWR)) 0 )
{
perror("create copy file error");
exit(1);
}
do
{
//讀取文件內(nèi)容
if( (size_read=read(fd_source_file,buf,1024)) 0 )
{
perror("read source file error");
exit(1);
}
//寫入目標文件
if( (size_write=write(fd_copy_file,buf,sieze_read))0 )
{
perror("wrire file error");
exit(1);
}
}while(size_read==1024)
return 0;
}
1、首先需要建立一個新的文件,輸入頭文件和主函數(shù)。
2、接下來需要定義變量類型。
3、設置完變量類型之后開始調(diào)用cpy函數(shù)。
4、接下來需要定義一個函數(shù),并定義變量類型。
5、最后加一個字符串結束符,并在主函數(shù)中輸出。
6、編譯。運行,可以看到字符串a(chǎn)復制到字符串b中。
是strcpy吧
原型聲明:extern char *strcpy(char dest[],const char *src);
頭文件:#include string.h
功能:把從src地址開始且含有NULL結束符的字符串復制到以dest開始的地址空間
說明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針
#include stdio.h
#include string.h
int main(void)
{
char str1[10];
char str2[]="Hello,Word";
strcpy(str1,str2);//把str2復制到str1,大意是:str1=str2//但是這樣寫在C語言是錯的
printf("str1=%s\n",str1);
return 0;
}