我在C中编写了一个程序,它有一个处理可以通过文件指针传递给它的文件的函数.
void process_my_file(FILE *fptr, ...) {
/* do work */
}
Run Code Online (Sandbox Code Playgroud)
我想从标准输入读取一些输入并将其传递给我的函数,而不必将输入写入临时文件.是否可以通过文件指针参数传递它,就像它是一个文件一样,而不必将其写入磁盘?可以通过我可以添加到签名中的其他一些参数来完成吗?
我是新手,需要一些建议.提前致谢!
您可以将您的函数stdin作为参数调用.
my_process_file(stdin, ...);
Run Code Online (Sandbox Code Playgroud)
担心这一点的唯一原因是你说'一些输入',但是大多数函数都会读取所有文件并停止在EOF上.无论如何,你可以调用你的函数,只要它按照你的要求运行,你就没事了.您可能不应该假设标准输入返回后有任何额外信息.
请注意,该功能不应依赖于fseek()不能在管道或终端上工作的操作,因为stdin它们通常与它们相连.