码迷,mamicode.com
首页 > 编程语言 > 详细

C++(实验六)

时间:2019-06-18 14:30:30      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:xcode   www   opened   结合   ima   namespace   单列   div   源码   

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++(实验六)

标签:xcode   www   opened   结合   ima   namespace   单列   div   源码   

原文地址:https://www.cnblogs.com/dadadacy/p/11044618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!