在C语言中,如何在硬盘上不存在文件的情况下向文件流中写入数据?

3
这在C语言中是否可行?甚至在C++中也可以吗?我更想了解C语言的情况。
例如,假设我有一个函数读取文本文件并对其进行处理。如果用户没有指定输入文本文件,并且我想将该函数用于stdin;是否可以将stdin写入文件流中,就像从文件读取一样,以便它可以在通常只接受输入文件的相同方法中使用?
当然,绕过这个问题的一种方法是,我可以将stdin写入临时文件,然后将临时文件传递给通常需要输入文件的函数。我已经在网上搜索并向大学导师提问,但没有得到任何解决方案。有人曾经实现过这个吗?
2个回答

5
如果您的函数有原型,可以这样说:
void add(FILE *fp,<rest of the argument>)
{
}

你可以直接传递它。
add(stdin,<rest of the arguments>);

由于stdin是FILE *类型

FILE *stdin;

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

感谢您的帮助!在提示用户输入后,有没有一种方法让它工作?目前我正在使用打印语句后的fgets。@Gopi - mar10

1

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

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

read(filedes, bufr, size);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接