在 C 中的硬盘驱动器上不存在文件的情况下写入文件流

Write to a file steam without a file existing on the hard drive in C

C语言可以吗?甚至 C++?我更愿意知道C.

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

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

如果你的函数有原型说

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

你可以直接通过

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

因为stdin的类型是FILE *

FILE *stdin;

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

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

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

read(filedes, bufr, size);