• freopen重定向输入


      当一个程序调试需多次手动输入数据时,可采用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):
    ");
     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("
    ");
    27     }
    28     fclose(stdin);//关闭输入文件 
    29     fclose(stdout);//关闭输出文件 
    30     
    31     return 0;
    32 }

    输入文件test.txt:

    输出文件result.txt:

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

  • 相关阅读:
    Bandicam班迪录屏 高清录制视频软件
    理解WebKit和Chromium: 浏览器综述
    GDAL对于raw数据支持的一个bug
    关于GDAL计算图像坐标的几个问题
    理解WebKit和Chromium: WebKit资源加载机制
    关于web服务器架构的思考
    使用PROJ4库将地心直角坐标(XYZ)转为地心大地坐标(BLH)
    Java数据类型和MySql数据类型对应表
    理解WebKit和Chromium: 基于Chromium内核的Android WebView
    【Unity探究】物理碰撞实验
  • 原文地址:https://www.cnblogs.com/kaml8/p/9517501.html
Copyright © 2020-2023  润新知