真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言有拷貝文件函數(shù)嗎 c語言 拷貝文件

C語言---如何復(fù)制任意文件?

C語言復(fù)制文件主要由三種辦法,你可以根據(jù)自己的知識(shí)選用一個(gè)

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的高密網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

方法1)利用C語言的二進(jìn)制讀寫函數(shù)

自己用fopen打開源文件和目標(biāo)文件,然后用循環(huán)讀寫實(shí)現(xiàn)復(fù)制

方法2)利用操作系統(tǒng)的文件復(fù)制函數(shù)

例如Windows就有如下API函數(shù)可以復(fù)制文件

BOOL CopyFile(

LPCTSTR lpExistingFileName, // name of an existing file

LPCTSTR lpNewFileName, // name of new file

BOOL bFailIfExists // operation if file exists

);

第一個(gè)參數(shù)是用來存放當(dāng)前要處理文件的路徑。

第二個(gè)參數(shù)是用來存放用戶指定的新路徑。

第三個(gè)參數(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語言函數(shù)編寫:文件復(fù)制

C語言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件復(fù)制功能,Linux環(huán)境下。

思路步驟:(下代碼最重要的邏輯步驟清晰)

第一步:打開源文件(要復(fù)制的文件),打開文件的方式以讀的方式就可以了。

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),這幾個(gè)函數(shù),具體的使用方法就查看manual就可以了。

第二步:創(chuàng)建目標(biāo)文件,所用的函數(shù)也是上面那幾個(gè)。

第三步:讀取文件。庫函數(shù)有:size_t read(int fd,void *buf,size_t count),

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)

第三步:寫入目標(biāo)文件。用的庫函數(shù):size_t write(int fd,void *buf,size_t count),

size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE *stream)

第四步:關(guān)閉文件。庫函數(shù):int fclose(FILE *fp) ,int close(int fd)

思路步驟就是這樣子的了。下面是具體的代碼實(shí)現(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);

}

//復(fù)制目標(biāo)文件名

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)建目標(biāo)文件

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);

}

//寫入目標(biāo)文件

if( (size_write=write(fd_copy_file,buf,sieze_read))0 )

{

perror("wrire file error");

exit(1);

}

}while(size_read==1024)

return 0;

}

怎樣用C語言將文件復(fù)制另外的文件夾

有兩種方式可以實(shí)現(xiàn)復(fù)制:

一、自行編寫函數(shù),實(shí)現(xiàn)復(fù)制。

算法流程如下:

1

以讀的方式打開源文件,以寫的方式打開目標(biāo)文件;

2

每次讀一個(gè)字節(jié),并寫到目標(biāo)文件中,直到達(dá)到文件結(jié)尾為止;

3

關(guān)閉兩個(gè)文件。

二、調(diào)用系統(tǒng)命令。

stdlib.h中的system函數(shù),可以執(zhí)行系統(tǒng)命令行支持的命令。

int

system(char

*cmd);

調(diào)用時(shí)就是執(zhí)行cmd中的指令。

1

對(duì)于windows,就是執(zhí)行dos命令,可以調(diào)用

system("copy

/Y

src_file

target_dir");

其中src_file為源文件,而target_dir就是目標(biāo)文件夾。

2

對(duì)于Linux,需要執(zhí)行shell命令cp,如下

system("cp

src_file

target_dir");

C語言文件復(fù)制

不應(yīng)對(duì)非文本文件使用fgetc等易受干擾的函數(shù),建議用fread,fwrite讀寫二進(jìn)制文件

#include "stdio.h"

/* 保護(hù)硬盤,絕對(duì)不要一個(gè)字節(jié)一個(gè)字節(jié)復(fù)制 */

#define SIZEOFBUFFER 256*1024L /* 緩沖區(qū)大小,默認(rèn)為256KB */

long filesize(FILE *stream)

{

long curpos, length;

curpos = ftell(stream);

fseek(stream, 0L, SEEK_END);

length = ftell(stream);

fseek(stream, curpos, SEEK_SET);

return length;

}

int copyfile(const char* src,const char* dest)

{

FILE *fp1,*fp2;

int fsize,factread;

static unsigned char buffer[SIZEOFBUFFER];

fp1=fopen(src,"rb");

fp2=fopen(dest,"wb+");

if (!fp1 || !fp2) return 0;

for (fsize=filesize(fp1);fsize0;fsize-=SIZEOFBUFFER)

{

factread=fread(buffer,1,SIZEOFBUFFER,fp1);

fwrite(buffer,factread,1,fp2);

}

fclose(fp1);

fclose(fp2);

return 1;

}

int main()

{

copyfile("file1.txt","file2.txt");

return 0;

}


本文名稱:c語言有拷貝文件函數(shù)嗎 c語言 拷貝文件
標(biāo)題來源:http://weahome.cn/article/ddejsch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部