文件流

来源:互联网 发布:js获取第二个子元素 编辑:程序博客网 时间:2024/06/05 07:40

 很开心哈!困扰我很长时间的一个文件流的问题解决鸟!

        问题源于英语老师让我帮忙给全班同学根据学号排序,然后把名单给她。一百来号人就这样给我人

工排序了!亏我还是学计算机滴!!!哭

        现在来贴下我的代码:

[cpp] view plaincopyprint?
  1. #include<fstream>  
  2. #include<iostream>  
  3. #include<string>  
  4. using namespace std;  
  5.   
  6. struct node     //学号、姓名  
  7. {  
  8.     long s_id;  
  9.     char name[30];  
  10. }date[43];  
  11.   
  12. inline void bubble_sort()   //根据学号从小到大,冒泡排序  
  13. {  
  14.     int i,j;  
  15.     node temp;  
  16.   
  17.     for(i=0;i<43;i++)  
  18.     {  
  19.         for(j=42;j>i;j--)  
  20.         {  
  21.             if(date[j].s_id<date[j-1].s_id)  
  22.             {  
  23.                 temp.s_id=date[j].s_id;  
  24.                 strcpy(temp.name,date[j].name);  
  25.                 date[j].s_id=date[j-1].s_id;  
  26.                 strcpy(date[j].name,date[j-1].name);  
  27.                 date[j-1].s_id=temp.s_id;  
  28.                 strcpy(date[j-1].name,temp.name);  
  29.             }  
  30.         }  
  31.     }  
  32. }  
  33.   
  34. inline void read_write()   //文件读写  
  35. {  
  36.     int i;  
  37.     ifstream infile;  
  38.     ofstream outfile;  
  39.   
  40.     infile.open("C:\\Users\\Lenovo\\Desktop\\学号排序\\a.txt",ios::in);  
  41.     outfile.open("C:\\Users\\Lenovo\\Desktop\\学号排序\\b.txt",ios::out);  
  42.   
  43.     if(!infile.is_open() || !outfile.is_open())  
  44.     {  
  45.         cerr<<"open error!"<<endl;  
  46.         exit(1);  
  47.     }  
  48.   
  49.     for(i=0;i<43;i++)  
  50.         infile>>date[i].s_id>>date[i].name;  
  51.   
  52.     bubble_sort();  
  53.   
  54.     for(i=0;i<43;i++)  
  55.         outfile<<date[i].s_id<<"  "<<date[i].name<<endl;  
  56.   
  57.     infile.close();  
  58.     outfile.close();  
  59. }  
  60.   
  61. int main()  
  62. {  
  63.     read_write();  
  64.   
  65.     return 0;  
  66. }  

          排序前的 a.txt:                                                               

 

排序后的 b.txt:

(注:截图问题,文档中内容没能全部截下来,但已可以说明程序的正确性啦。)

 

          代码就以43人为准啦。(小秘密:这是一班的人数,美女也最多)

          在写代码的过程中还是有几点要注意的:

          ①如前所说,这个问题我很早就遇到了,当时刚接触C++,老师也不讲文件流这一部分。自己感觉

有点难了,也就搁置了!只想说:学习要抓紧点滴。不能有点难就不做啦。

          ②写的过程也非一番风顺的。

              问题一:把  "C:\\Users\\Lenovo\\Desktop\\学号排序\\a.txt"  这个文件路径写成 "C:\Users\Lenovo\

Desktop\学号排序\a.txt"  。结果用is_open()函数发现文件老是打不开!费了很长时间才找到这个问题。关

键是很多教辅书也都是错误写法!!!

              问题二:把上一个问题改对了之后,还有一个更让人无语的问题才渐渐浮出水面。我把自己电脑

设置成“隐藏文件扩展名”,结果老是打不开文件!改过来之后才可以滴。我觉得电脑几乎无所不能,关键

你要给出正确设置。系统越渐庞大,互相影响。个人觉得早晚是个问题。

            后感:bug让人痛苦,debug了,又觉得一切值得。

            欢迎拍砖!

原创粉丝点击