#包含?& ltstdlib.h & gt
#包含?& ltstring.h & gt
#ifdef?BUFSIZ
# undef?BUFSIZ
#定義?BUFSIZ?4096
#endif
/*
使用格式:mcpy?源文件?目標文件
並且目標文件和源文件不能相同,否則文件內容將被清空。
源文件必須存在,目標文件可能存在,也可能不存在。如果存在,內容將被覆蓋。
*/
int?main(int?argc,char?**argv)
{
夏爾?buf[buf siz];
int?msglen
如果(argc!=3||strcmp(argv[1],argv[2])==0)
/*argc:在命令行模式下輸入的參數數量。
Argv:第壹個參數的第壹個地址。*/
{
fprintf(stderr," * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n \ n ");
fprintf(stderr,"拜托?用法:%s?源文件?目標文件\ n和?源文件?是嗎?不壹樣?從哪裏?destination_file\n\n ",argv[0]);
fprintf(stderr," * * * * * * * * * * * * * * * * * * * * * \ n ");
退出(0);
}
文件?*fp_src,* fp _ des
if((fp_src=fopen(argv[1]," r))= = NULL)
/*為空,則打開失敗*/
{
fprintf(stderr," open?%s?失敗了!\n ",argv[1]);
退出(1);
}
if((fp_des=fopen(argv[2]," w))= = NULL)
/*為空,則打開或創建失敗*/
{
fprintf(stderr,"打開/創建?%s?失敗了!\n ",argv[2]);
出口(2);
}
while(fgets(buf,BUFSIZ,fp_src)!=空)
/*從源文件讀取,返回NULL*/
{
if(fputs(buf,fp_des)==EOF)
/*寫入目標文件,並返回EOF如果寫入失敗;如果成功返回寫入的字節數*/
{
fprintf(stderr," copy?%s?去哪?%s?失敗了!\n ",argv[1],argv[2]);
出口(3);
}
}
printf("復制?%s?去哪?%s?成功了!\n ",argv[1],argv[2]);
回歸?0;
}