【问题标题】:replace the stdin for a file替换文件的标准输入
【发布时间】:2008-10-14 23:27:34
【问题描述】:

我有一个这样的 fscanf 程序:

fscanf(stdin, "%d %d,....

我有很多 fscanf 和我想测试的文件,文件是这样的

10485770 15 51200000 -2 10 10 10485760 10485760 10 10485760 10485760 10 10485760 10485760

我的问题是如何告诉程序或编译器不要从键盘而是从那些文件中获取输入。这些程序是基准,在我得到输入的文件中,我确信有一种方法可以自动执行此操作,因为在某些情况下有很多输入。提前谢谢你。

【问题讨论】:

    标签: stdin scanf


    【解决方案1】:

    试试 freopen。例如。

    freopen( "somefile.txt", "r", stdin );
    

    【讨论】:

      【解决方案2】:

      从命令行运行时,您可以使用“

      例如,在 windows 上:

      $ type input_file
      10485770 15 51200000 -2 10 10 10485760 10485760 10 10485760 10485760 10 10485760
      10485760
      $ my_program.exe < input_file
      

      或者在 *nix 上:

      $ cat input_file
      10485770 15 51200000 -2 10 10 10485760 10485760 10 10485760 10485760 10 10485760
      10485760
      $ ./my_program < input_file
      

      【讨论】:

        【解决方案3】:

        查找文件结构。您会希望在此解决方案中使用 FILE 指针。

        【讨论】:

        • 不——你不会想要操纵 FILE 结构的内部结构。将 FILE 指针视为不透明类型;将它们与标准 I/O 库函数或在这些函数之上构建的函数一起使用。除非您确定自己知道自己在做什么,否则不要在 FILE 内部乱摸。
        猜你喜欢
        • 2012-11-05
        • 2021-05-10
        • 1970-01-01
        • 1970-01-01
        • 2012-06-01
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 2013-03-18
        相关资源
        最近更新 更多