『壹』 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語言實現文件拷貝
兩種方法:
1. 用c語言的文件操作:讀出文件argv[1]的內容,再把讀出的內容寫入到文件argv[2]中
2. 使用函數system來執行dos中的文件拷貝命令
char command[100]=" ";
strcat(command, argv[1]);
strcat(command," ");
strcat(command,argv[2]);
system( command );
『叄』 C語言編程 將一個文件復制為另一個文件
#include
int
main()
{
FILE
*one,
*two;
one
=
fopen("sfile.txt",
"r");
two
=
fopen("tfile.txt",
"w");
char
c;
while((c=fgetc(one))!=EOF)
fputc(c,two);
fflush(two);
fclose(one);
fclose(two);
return
0;
}
一個最簡單的文件復制函數,功能很有限,要求源文件和目標文件在同一個目錄下。。。。。。
『肆』 c語言拷貝文件的代碼
system(" D:\\a\\123.exe D:\\b\\123.exe");
用system 調DOS復制命令。單斜杠用雙斜杠。
同名時,也可以用 *.*
system(" D:\\a\\123.exe D:\\b\\*.*");
---
文件讀寫方法復制,要用 "b" (二進制方法打開),一個位元組一個位元組讀寫並檢查是否到了EOF,到了則關閉文件不再寫。
『伍』 c語言怎麼復制整個文件夾
文件復制可以通過一個簡單的IO讀寫完成,文件夾的話應該是要調用windows的API來創建一個文件夾後把再把文件復制過去。這個你要去查看windows的API了。
『陸』 c語言怎麼復制文件
BOOL
CopyFile(LPCTSTR
lpExistingFileName,LPCTSTR
lpNewFileName,BOOL
bFailIfExists
);
說明
復制文件。與vb的file命令相似
返回值
Long,非零表示成功,零表示失敗。會設置GetLastError
參數表
參數
類型及說明
lpExistingFileName
String,源文件名
lpNewFileName
String,目標文件名
bFailIfExists
Long,如果設為TRUE(非零),那麼一旦目標文件已經存在,則函數調用會失敗。否則目標文件被改寫
『柒』 C語言---如何復制任意文件
C語言復制文件主要由三種辦法,你可以根據自己的知識選用一個
方法1)利用C語言的二進制讀寫函數
自己用fopen打開源文件和目標文件,然後用循環讀寫實現復制
方法2)利用操作系統的文件復制函數
例如Windows就有如下API函數可以復制文件
BOOL CopyFile(
LPCTSTR lpExistingFileName, // name of an existing file
LPCTSTR lpNewFileName, // name of new file
BOOL bFailIfExists // operation if file exists
);
第一個參數是用來存放當前要處理文件的路徑。
第二個參數是用來存放用戶指定的新路徑。
第三個參數它是用來判斷用戶指定的新路徑是否已經存在要存放的路徑,如果為TRUE,則新路徑中已經存在該文件了,該函數調用失敗,否則就調用成功。
方法3:C語言調用操作系統的命令
首先#include<stdlib.h>
然後 程序中 調用 system(「這里寫 的完整命令」);
『捌』 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;
}
『玖』 c語言復制文件
照著API文檔一步步來 沒問題的!
『拾』 C語言復制文件
while以及後面這么寫就好了
while( i < argc && (wbfp = fopen(argv[i],"wb"))!=NULL){
rewind(rbfp);
data(rbfp,wbfp);
fclose(wbfp);
i++;
}
fclose(rbfp);
// fclose(wbfp);
有3個問題
1.fclose(wbfp)寫在循環外邊不能達到關閉全部輸出文件的目的
2.單用(wbfp = fopen(argv[i],"wb"))!=NULL 做循環條件會內存錯誤
3.源文件每次讀取前要用rewind函數恢復指針,否則再讀就是空文件了