首页 > 其他 > 详细

freopen重定向输入

时间:2018-08-22 16:07:53      阅读:217      评论:0      收藏:0      [点我收藏+]

  当一个程序调试需多次手动输入数据时,可采用freopen()库函数,先将测试数据存入文件,再调用该函数将输入由键盘重定向为文件,也可以调用该函数将输出由屏幕重定向为文件,直接在文件中查看。

用法:

freopen( "path","mode", stream ); 

其中path表示用于存储输入输出的自定义文件路径,mode表示文件打开的模式(如r-只读, w-写),stream表示 一个文件,且通常使用标准流文件。(标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。)

注:在c/c++中,用到的路径名都应使用"\\"替代原来的"\",如"F:\c++程序文件\报时助手"应改为"F:\\c++程序文件\\报时助手"

示例:报时助手

问题描述
  给定当前的时间,请用英文的读法将它读出来。
  时间用时h和分m表示,在英文的读法中,读一个时间的方法是:
  如果m为0,则将时读出来,然后加上“o‘clock”,如3:00读作“three o‘clock”。
  如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。
  时和分的读法使用的是英文数字的读法,其中0~20读作:
  0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。
  30读作thirty,40读作forty,50读作fifty。
  对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。
  按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。
输入格式
  输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。
输出格式
  输出时间时刻的英文。
样例输入
0 15
样例输出
zero fifteen

代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main()
 4 {
 5     freopen("F:\\c++程序文件\\报时助手\\test.txt","r",stdin);//输入重定向,输入数据将从test.txt文件中读取 
 6     freopen("F:\\c++程序文件\\报时助手\\result.txt","w",stdout); //输出重定向,输出数据将保存在result.txt文件中 
 7     int h,m;
 8     printf("Please input h(hour) m(minute):\n");
 9     while(scanf("%d %d",&h,&m)!=EOF)
10     {
11         char g[50][50]={"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"};
12         char s[10][10]={"twenty","thirty","forty","fifty"};
13         if(m==0)
14             if(h<21)
15                 printf("%s o‘clock",g[h]);
16             else {printf("%s %s o‘clock",s[h/10-2],g[h%10]);}
17         else 
18         {
19             if(h<21)
20                 printf("%s ",g[h]);
21             else {printf("%s %s ",s[h/10-2],g[h%10]);}
22             if(m<21)
23                 printf("%s ",g[m]);
24             else {printf("%s %s ",s[m/10-2],g[m%10]);}
25         }
26         printf("\n");
27     }
28     fclose(stdin);//关闭输入文件 
29     fclose(stdout);//关闭输出文件 
30     
31     return 0;
32 }

输入文件test.txt:

技术分享图片

输出文件result.txt:

技术分享图片

可以看出,程序运行时测试了所有数据,结果保存在一个文件中。

freopen重定向输入

原文:https://www.cnblogs.com/kaml8/p/9517501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!