ep9_8.cpp
上传用户:wxcui2006
上传日期:2022-07-12
资源大小:1274k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. /*9.8 用二进制方式,把一个文件连接到另一个文件的尾部,选择适当的文件打开方式完成。*/
  2. #include<fstream>
  3. #include<iostream>
  4. #include<cstdlib>
  5. using namespace std;
  6. int main(){
  7. int n;
  8. char filename[256],buf[100];
  9. fstream sfile,dfile;
  10. cout<<"输入源文件路径名:"<<endl;//请用s.txt
  11. cin>>filename;//对路径各方面而言空格是无关紧要的,否则要用getline()等成员函数
  12. sfile.open(filename,ios::in|ios::binary);//打开一个已存在的二进制文件
  13. while(!sfile){
  14. cout<<"源文件找不到,请重新输入路径名:"<<endl;
  15. sfile.clear(0);//出错后,状态必须清0
  16. cin>>filename;
  17. sfile.open(filename,ios::in|ios::binary);
  18. }
  19. cout<<"输入目标文件路径名:"<<endl;//请用d.txt,s.txt接于其后;千万不可用源文件,会死循环(A行)
  20. cin>>filename; //只能创建文件,不能建立子目录,如路径不存在则失败
  21. dfile.open(filename,ios::app|ios::out|ios::binary);//文件指针在尾部,文件不存在可新建,并可用
  22. if(!dfile){
  23. cout<<"目标文件创建失败"<<endl;
  24. return -1;
  25. }
  26. while(!sfile.eof()){//二进制方式需另判文件是否结束   A
  27. sfile.read(buf,100);
  28. n=sfile.gcount();
  29. dfile.write(buf,n);//按实际读取字节数写
  30. sfile.close();
  31. dfile.close();
  32. return 0;
  33. }
  34. //如果用word文档,则可见目标文档大小在翻倍,但只能读最前面一段,word文档构造前面有一大堆说明,
  35. //真正链接,源文件说明要去掉,但这做不到。