在 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);
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);