c语言文件复制
A. c语言函数编写:文件复制
C语言实现一个简单的文件复制功能,Linux环境下。
思路步骤:(下代码最重要的逻辑步骤清晰)
第一步:打开源文件(要复制的文件),打开文件的方式以读的方式就可以了。
Linux C打开文件的库函数有: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),这几个函数,具体的使用方法就查看manual就可以了。
第二步:创建目标文件,所用的函数也是上面那几个。
第三步:读取文件。库函数有:size_t read(int fd,void *buf,size_t count),
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)
第三步:写入目标文件。用的库函数:size_t write(int fd,void *buf,size_t count),
size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE*stream)
第四步:关闭文件。库函数:int fclose(FILE*fp) ,int close(int fd)
思路步骤就是这样子的了。下面是具体的代码实现。
#include
#include
#include
#include
#include
#include
int main(int argc,char *argv[])
{
int fd_source_file,fd__file;//用接受int open()函数返回的值
//FILE *fp_source_file,*fp__file;//如果用FILE *fopen()函数的话
int size_read,size_write;
char buf[1024];
char _file_name[50];
//检查参数的输入
if(argc<3)
{
printf("usage: ./a.out source_file_path _file_path\n");
exit(1);
}
//复制目标文件名
strcpy(_file_name,argv[2]);
//打开源文件
if( (fd_source_file=open(argv[1],O_RDONLY,00744))<0 )
{
perror("open source file error");
exit(1);
}
//创建目标文件
if( (fd__file=open(argv[1],O_CREAT|O_RDWR)) <0 )
{
perror("create file error");
exit(1);
}
do
{
//读取文件内容
if( (size_read=read(fd_source_file,buf,1024)) <0 )
{
perror("read source file error");
exit(1);
}
//写入目标文件
if( (size_write=write(fd__file,buf,sieze_read))<0 )
{
perror("wrire file error");
exit(1);
}
}while(size_read==1024)
return 0;
}
B. C语言编程实现:将一个文件的内容复制到另一个文件。(详细点的,考试用。)谢谢!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#ifdefBUFSIZ
#undefBUFSIZ
#defineBUFSIZ4096
#endif
/*
使用格式:mcpy源文件目标文件
且目标文件和源文件不能一样,否则会清空文件内容,
源文件必须存在,目标文件可存在也可不存在,如果存在,内容会被覆盖掉。
*/
intmain(intargc,char**argv)
{
charbuf[BUFSIZ];
intmsglen;
if(argc!=3||strcmp(argv[1],argv[2])==0)
/*argc:命令行模式下,输入的参数数目。
argv:第一个参数的首地址。*/
{
fprintf(stderr,"******************************** ");
fprintf(stderr,"Pleaseusage:%ssource_filedestination_file Andsource__file ",argv[0]);
fprintf(stderr,"******************************** ");
exit(0);
}
FILE*fp_src,*fp_des;
if((fp_src=fopen(argv[1],"r"))==NULL)
/*为空,则打开失败*/
{
fprintf(stderr,"open%sfailed! ",argv[1]);
exit(1);
}
if((fp_des=fopen(argv[2],"w"))==NULL)
/*为空,则打开或创建失败*/
{
fprintf(stderr,"open/create%sfailed! ",argv[2]);
exit(2);
}
while(fgets(buf,BUFSIZ,fp_src)!=NULL)
/*从源文件读,读失败或到达文件尾部时,返回NULL*/
{
if(fputs(buf,fp_des)==EOF)
/*写入目标文件,写入失败时,返回EOF;若成功返回写入的字节数*/
{
fprintf(stderr,"%sto%sfailed! ",argv[1],argv[2]);
exit(3);
}
}
printf("%sto%ssuccessful! ",argv[1],argv[2]);
return0;
}
C. 怎样用C语言将文件复制另外的文件夹
有两种方式可以实现复制:
一、自行编写函数,实现复制。
算法流程如下:
1
以读的方式打开源文件,以写的方式打开目标文件;
2
每次读一个字节,并写到目标文件中,直到达到文件结尾为止;
3
关闭两个文件。
二、调用系统命令。
stdlib.h中的system函数,可以执行系统命令行支持的命令。
int
system(char
*cmd);
调用时就是执行cmd中的指令。
1
对于windows,就是执行dos命令,可以调用
system("
/Y
src_file
target_dir");
其中src_file为源文件,而target_dir就是目标文件夹。
2
对于Linux,需要执行shell命令cp,如下
system("cp
src_file
target_dir");
D. 镐庢牱鐢–璇瑷灏嗘枃浠跺嶅埗鍙﹀栫殑鏂囦欢澶
链変袱绉嶆柟寮忓彲浠ュ疄鐜板嶅埗锛
涓銆佽嚜琛岀紪鍐椤嚱鏁帮纴瀹炵幇澶嶅埗銆
绠楁硶娴佺▼濡备笅锛
1 浠ヨ荤殑鏂瑰纺镓揿紑婧愭枃浠锛屼互鍐欑殑鏂瑰纺镓揿紑鐩镙囨枃浠讹绂
2 姣忔¤讳竴涓瀛楄妭锛屽苟鍐椤埌鐩镙囨枃浠朵腑锛岀洿鍒拌揪鍒鏂囦欢缁揿熬涓烘锛
3 鍏抽棴涓や釜鏂囦欢銆
浜屻佽皟鐢ㄧ郴缁熷懡浠ゃ
stdlib.h涓镄剆ystem鍑芥暟锛屽彲浠ユ墽琛岀郴缁锻戒护琛鏀鎸佺殑锻戒护銆
int system(char *cmd);
璋幂敤镞跺氨鏄镓ц宑md涓镄勬寚浠ゃ
1 瀵逛簬windows,灏辨槸镓ц宒os锻戒护锛屽彲浠ヨ皟鐢
system(" /Y src_file target_dir");
鍏朵腑src_file涓烘簮鏂囦欢锛岃宼arget_dir灏辨槸鐩镙鏂囦欢澶銆
2 瀵逛簬Linux锛岄渶瑕佹墽琛宻hell锻戒护cp锛屽备笅
system("cp src_file target_dir");
E. 如何用c语言将文件复制到自己想要的文件夹
C语言里的system("");函数可以执行命令行的几乎所有指令,把命令行输入的内容作为参数传入即可。复制文件的话 应该是: 源文件 目的路径。
例如命令行里的 c:\test.txt d:\text.txt,
也就是C语言里的:system(" c:\test.txt d:\text.txt");
或者这样
char c[50] = " c:\test.txt d:\text.txt";
system(c);