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

书籍源码

开发平台:

Visual C++

  1. /*9.7 以文本方式把一个文本文件(如C++源文件)的前十行拷贝到一个新的文件中。*/
  2. #include<fstream>
  3. #include<iostream>       //<fstream.h>不包含<iostream.h>
  4. #include<cstdlib>
  5. using namespace std;
  6. int main(){
  7. int line=0;
  8. char filename[256],buf[256];
  9. fstream sfile,dfile;
  10. cout<<"输入源文件路径名:"<<endl;//请用s.txt,如用s.doc(word文档)则失败
  11. cin>>filename;//对路径各方面而言空格是无关紧要的,否则要用getline()等成员函数
  12. sfile.open(filename,ios::in);//打开一个已存在的文件
  13. while(!sfile){
  14. cout<<"源文件找不到,请重新输入路径名:"<<endl;
  15. sfile.clear(0);//出错后,状态必须清0
  16. cin>>filename;
  17. sfile.open(filename,ios::in);
  18. }
  19. cout<<"输入目标文件路径名:"<<endl;//请用d.txt
  20. cin>>filename; //只能创建文件,不能建立子目录,如路径不存在则失败
  21. dfile.open(filename,ios::out);
  22. if(!dfile){
  23. cout<<"目标文件创建失败"<<endl;
  24. return 1;
  25. }
  26. while(sfile.getline(buf,256),sfile.eof()!=1&&line<10){//按行拷贝  A行
  27. if(sfile.rdstate()==0) {
  28. dfile<<buf<<'n';//因流正常,读到回车符,但未提取  B行
  29. line++;
  30. }
  31. else{
  32. dfile<<buf;//流不正常,还未读到回车换行符,所以不加'n'
  33. sfile.clear();//状态字被置为0x02,必须清0
  34. }
  35. sfile.close();
  36. dfile.close();
  37. return 0;
  38. }