C++(实验六)

Posted dadadacy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++(实验六)相关的知识,希望对你有一定的参考价值。

Part  1

1. 合并两个文件到新文件中。文件名均从键盘输入。 运行程序,结合运行结果及源码中注释,理解和体会文件I/O的方法。 

技术图片
 1 // 合并两个文件内容到一个新文件中。
 2 // 文件名均从键盘输入
 3 #include <iostream>
 4 #include <fstream>
 5 #include <string>
 6 #include <cstdlib>
 7 using namespace std;
 8 int main() 
 9 string filename1, filename2, newfilename;
10 cout << "输入要合并的两个文件名: " ;
11 cin >> filename1 >> filename2;
12 cout << "输入合并后新文件名: " ;
13 cin >> newfilename;
14 ofstream fout; // 输出文件流对象
15 ifstream fin; // 输入文件流对象
16 fin.open(filename1); // 将输入文件流对象fin与文件filename1建立关联
17 if(!fin.is_open())  // 如果打开文件失败,则输出错误提示信息并退出
18 cerr << "fail to open file " << filename1 << endl;
19 system("pause");
20 exit(0);
21 
22 fout.open(newfilename); // 将输出文件流对象fout与文件newfilename建立关联
23 if(!fin.is_open())  // 如果创建/打开文件失败,输出错误提示信息并退出
24 
25 cerr << "fail to open file " << newfilename << endl;
26 system("pause");
27 exit(0);
28 
29 char ch;
30 // 从文件输入流对象fin中获取字符,并将其插入到文件输出流对象fout中
31 while(fin.get(ch))
32 fout << ch;
33 fin.close(); // 关闭文件输入流对象fin与文件filename1的关联
34 fout << endl; // 向文件输出流对象fout中插入换行
35 fin.open(filename2); // 将输入文件流对象fin与文件filename2建立关联
36 if(!fin.is_open())  // 如果打开文件失败,则输出错误提示信息并退出
37 cerr << "fail to open file " << filename2 << endl;
38 system("pause");
39 exit(0);
40 
41 // 从文件输入流对象fin中获取字符,并将其插入到文件输出流对象fout中
42 while(fin.get(ch))
43 fout << ch;
44 fin.close(); // 关闭文件输入流对象fin与文件filename2的关联
45 fout.close(); // 关闭文件输出流对象fout与文件newfilename的关联
46 system("pause");
47 return 0;
48 
main.cpp

运行截图

技术图片

技术图片

技术图片

 

Part  2

 使用文件I/O流,以文本方式打开Part1中合并后的文件,在文件最后一行添加字符"merge successfully. " 

技术图片
 1 #include <iostream>
 2 #include <fstream>
 3 #include <string>
 4 #include <cstdlib>
 5 using namespace std;
 6 int main() 
 7 ofstream fout;
 8 fout.open("3.txt",ios_base::app); 
 9 if(!fout.is_open())  
10 cerr << "fail to open file 3.txt "<< endl;
11 system("pause");
12 exit(0);
13 
14 fout <<endl<< "merge successfully."<< endl; 
15 fout.close();
16 system("pause");
17 return 0;
18 
main.cpp

运行截图

技术图片

 

Part  3(待完善)

  已知名单列表文件list.txt。编写一个应用程序,实现从名单中随机抽点n位同学(n由键盘输入),在屏幕上显 示结果,同时也将结果写入文本文件,文件名自动读取当天系统日期,如20190611.txt。 

技术图片
 1 #include <iostream>
 2 #include <fstream>
 3 #include <string>
 4 #include <cstdlib>
 5 #include <ctime>
 6 #include "utils.h"
 7 using namespace std;
 8 
 9 int main() 
10     int i,j;
11     char s[83][100];
12     string filename,newfilename;
13     cout << "请输入文件名: " ;
14     cin >> filename;
15     cout << "请输入抽点的人数: " ;
16     cin >> n;
17     newfilename = getCurrentDate();
18     ofstream fout;
19     ifstream fin;
20     srand((unsigned)time(NULL));
21     fout.open(newfilename);
22     if(!fout.is_open()) 
23         cerr << "fail to open " << filename << endl;
24         system("pause");
25         exit(0);
26     
27     fin.open(filename);
28     if(!fin.is_open()) 
29         cerr << "fail to open file " << filename << endl;
30         system("pause");
31         exit(0);
32       for (i = 0; i < 83; i++) 
33         for (j = 0; j < 100; j++) 
34             ch = fin.get();
35             s[i][j] = ch;
36             if (ch == \\n)
37             
38                 break;
39             
40 
41         
42     
43     fin.close();
44     fout.open(getCurrentDate());
45     for (i = 0; i < n; i++) 
46         a = rand() % 83;
47         cout << s[a];
48         fout << s[a];
49     
50 
51     fout.close();
52     system("pause");
53     return 0;
54 
main.cpp

*这道题utils.h一直显示技术图片

 

Part  4

编程统计英文文本文件中字符数(包括空格)、单词数、行数。文件名由键盘输入。

技术图片
 1 #include <iostream>
 2 #include <fstream>   
 3 #include <cstring>
 4 #include <cstdlib>
 5 using namespace std;
 6 
 7 int main()
 8     string filename;
 9     int n=0,l=1,w=1;
10     char ch;
11     cout<<"输入要统计的英文文本文件名:";
12     cin>>filename;
13     ifstream fin;
14     fin.open(filename); 
15     if(!fin.is_open())  
16         cerr << "fail to open file " << filename << endl;
17         exit(0);    
18      
19     while(fin.get(ch)) 
20       
21        if(ch!=\\n)
22          
23             n++;
24             if(ch== )
25               w++;
26          
27        else
28             
29                 w++;
30                 l++;
31             
32       
33     cout<<"字符数: "<<n<<endl;
34     cout<<"单词数:"<<w<<endl;
35     cout<<"行数:"<<l<<endl;
36    return 0;
37 
main.cpp

运行截图

技术图片

 

 

实验总结:

对流类库与I/O有了新的认识,但在实验中意识到对这部分的知识还是薄弱的,需要其他同学的帮助

对于Xcode与Windows某些兼容性还需完善,

 

评论链接

https://www.cnblogs.com/agsjg/p/10970474.html

https://www.cnblogs.com/mxueyyqx/p/10963449.html

https://www.cnblogs.com/aiwenzhuo/p/10970940.html

以上是关于C++(实验六)的主要内容,如果未能解决你的问题,请参考以下文章

C++ 实验六

C++(实验六)

第二次实验总结

实验六报告

区块链技术与应用实验报告(实验六)

区块链技术与应用实验报告(实验六)