【问题标题】:Write to a file steam without a file existing on the hard drive in C在 C 中的硬盘驱动器上不存在文件的情况下写入文件 steam
【发布时间】:2015-02-24 06:26:30
【问题描述】:

这在 C 语言中可行吗?甚至C++?我更喜欢了解 C。

例如,假设我有一个读取文本文件并对其进行处理的函数。如果用户没有指定输入文本文件并且我想将该函数用于标准输入; 是否可以将标准输入写入文件流,就好像它来自文件读取一样,因此可以在通常只接受输入文件的相同方法中使用它?

当然,解决这个问题的方法是我可以采用标准输入,将其写入临时文件,然后将临时文件传递给通常采用输入文件的函数。我在网上搜索并询问了大学的导师,但没有得到任何解决方案。有人做过吗?

【问题讨论】:

    标签: c++ c input


    【解决方案1】:

    如果你的函数有原型的话

    void add(FILE *fp,<rest of the argument>)
    {
    }
    

    你可以直接通过

    add(stdin,<rest of the arguments>);
    

    因为标准输入的类型是FILE *

    FILE *stdin;
    

    无需从标准输入读取并将其存储在某个文件中,然后将该文件指针发送到您的 API。

    【讨论】:

    • 感谢您的帮助!在提示用户输入后,有没有办法让它工作?目前我在打印语句后使用 fgets 。 @Gopi
    【解决方案2】:

    STDIN 会自动为您打开,因此只需从 STDIN 读取即可。有几种方法,但基本上 STDIN 是文件描述符 0。

    int filedes = 0;
    if(/* argv[1] is a file name */)
        filedes = open(argv[1], flags);
    
    read(filedes, bufr, size);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-17
      • 2014-11-29
      • 2016-10-08
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      相关资源
      最近更新 更多