华师一附中OI组

标题: 文件输入输出技术 [打印本页]

作者: admin    时间: 2019-11-14 11:28
标题: 文件输入输出技术
平时的训练为了方便大家都是从键盘上读入数据,将结果输出到屏幕上,所以我们一般直接cin,cout。但是标准考试的时候为了电脑自己评测需要,要求选手要使用文件输入输出,一般的做法是使用cstdio库里面的freopen函数。
具体做法如下:以NOIP2017初中组第一题,成绩score为例,平时我们写的程序如下:

  1. #include <iostream>
  2. using namespace std;
  3. int s,a,b,c;
  4. int main()
  5. {
  6.         cin>>a>>b>>c;
  7.         s=a*0.5+b*0.3+c*0.2;
  8.         cout<<s;
  9.         return 0;
  10. }
复制代码

但这样交上去考试肯定得0分,因为题目有要求,

改动如下:
1、在头文件处包含cstdio。
2、main函数头两句写上freopen("文件名","r",stdin);freopen("文件名","w",stdout);就可以了。

  1. #include <iostream>
  2. #include <cstdio>  ///freopen 所在的库
  3. using namespace std;
  4. int s,a,b,c;
  5. int main()
  6. {
  7.         freopen("score.in","r",stdin); ///从文件score.in里面读入数据
  8.         freopen("score.out","w",stdout);///向文件score.out里面写数据
  9.         cin>>a>>b>>c;
  10.         s=a*0.5+b*0.3+c*0.2;
  11.         cout<<s;
  12.         return 0;
  13. }
复制代码

调试的时候我们注释到fropen两句,当作键盘输入屏幕输出来调试,等到结果正确,去掉注释,再编译一下,没有问题在保存上交。
注意,有同学freopen里面r,w,stdio,stdout等还会写错,这就无语了!

作者: admin    时间: 2019-11-14 11:35
注意:
考试时候的文件名都是小写,Linux系统是区分大小写的,不要写错;
读文件是in, r ,stdin   写文件是 out, w, stdout




欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2