利用文件重定向提高调试效率(已阅加重点划)

来源:互联网 发布:linux无法重启网络服务 编辑:程序博客网 时间:2024/05/16 17:40

  编程得到正确结果前,往往需要多次运行程序,每次运行都需要花费不少的时间从键盘输入数据。每次输入的数据都是相同的时,会给人的心理带来不爽的感觉,并造成时间上的浪费。无论平时练习还是ACM竞赛实战,这些都是可以避免的。方法是,运用重定向

  用下面的形式调用函数freopen()会将标准输入stdin重定向到文件input.txt(这个名字可以自己定义)。

输入输出重定向例:
文件名为:r.txt
输入重定向到文件r.txt:freopen("r.txt","r",stdin);将文件r.txt中的数据读取
输出到文件:freopen("r.txt","w",stdout);将输出的结果写入到指定文件
参数说明:(文件名,方式(r为读取,w为写入),照打就ok了);
若文件名出写:"CON",为重定向回控制台

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. freopen("input.txt","r",stdin);    //设置输入和输出文件  
  重定向后,原先从键盘(标准输入的默认设备)接受的输入,将统统从文件读取input.txt读取,这就是重定向。程序可以写作:
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     freopen("input.txt","r",stdin);  //只加这一句输入将被重定向到文件input.txt  
  5.     int a,b;  
  6.     scanf("%d%d",&a,&b);  
  7.     printf("%d\n",a+b);  
  8.     return 0;  
  9. }  
  于是,在运行程序前,将本该由键盘输入的数据,写到文件input.txt中。而在运行程序时,数据将不再需要人去输入。那个快,很享受。
  需要注意的是,调试通过的程序,千万不要直接提交到OJ平台上去。如果竞赛中这样做了,罚你的20分钟不要算到我的头上。提交的程序要把输入重定向的一行删除,这样才算是符合要求的,可以获得AC的程序(提交oj时要将加入的重定向一行删除)

  除了删除那一行,还有一种简单的做法是,提交前将这一行前加上注释符"//",效果是一样的。

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     //freopen("input.txt","r",stdin);  //只加这一句输入将被重定向到文件input.txt  
  5.     int a,b;  
  6.     scanf("%d%d",&a,&b);  
  7.     printf("%d\n",a+b);  
  8.     return 0;  
  9. }  
0 0