我一直在尝试在我的模块中编写“简单易用”的输出重定向。它假设在某个文件和fprintf
之间更改stdin
的输出。
所以我一直在想类似的事情:
void _connection(char mode) { /* pass 'v' as an argument to set verbous mode*/
FILE *stream
if (mode == 'v')
fopen(stream, "stdin location?");
else
fopen(stream, "../stream");
fprintf(stream, "Connecting to the queue...");
...
fprintf(stream, "Some detail information...");
---
搜索我的系统我无法找到任何stdin声明。我的系统上的stdio.h
源文件正在使用这个宏,但我无法从中得到它。我的意思是,此文件中没有输入文件或任何名为stdin
的宏。
答案 0 :(得分:1)
在这里找到它(Unix):
/usr/include/stdio.h
或在Windows上:
(Compiler Path)\include\stdio.h
请注意,ISO C标准要求stdin
/ stdout
/ stderr
为宏,而POSIX要求它们为外部FILE*
标识符,因此您可能会看到此在POSIX兼容系统(Linux和其他)上:
#define stdin stdin
答案 1 :(得分:0)
stdin
宏在stdio.h中定义,或者在最终包含的文件中定义。只要您#include <stdio.h>
,您就可以访问它。
对于您正在做的事情,您不需要单独打开。只需将stdin
复制到文件指针:
if (mode == 'v')
stream = stdin;
else
fopen(stream, "../stream");