c程序中不使用标准输出重定向的Fprintf函数
我在Unix中创建了一个C程序,其中fprintf声明如下:c程序中不使用标准输出重定向的Fprintf函数,c,printf,pipe,C,Printf,Pipe,我在Unix中创建了一个C程序,其中fprintf声明如下: #Include<stdio.h> ... fprintf(stdout,"Example\n"); $./ExampleProgram > file.txt 预期的结果是在文件中有isExample,但是输出是这样的(我在下面的命令提示符行00和02上键入): 如果我重定向stderr,则输出如下: 00.BASH4.1$./ExamplePro
#Include<stdio.h>
...
fprintf(stdout,"Example\n");
$./ExampleProgram > file.txt
预期的结果是在文件中有isExample
,但是输出是这样的(我在下面的命令提示符行00和02上键入):
如果我重定向stderr,则输出如下:
00.BASH4.1$./ExampleProgram &> file.txt
01.BASH4.1$ cat file.txt
02.BASH4.1$
根本没有输出
知道为什么会这样吗
编辑:问题可能是fprintf的缓冲区,但我尝试使用fflush(stdout)
修复它,但它不起作用
EDIT2:添加了更多细节。我刚刚测试了上面列出的示例。效果很好。 下面是示例测试c文件的代码:
#包括
int main()
{
fprintf(stdout,“示例\n”);
返回0;
}
使用:gcc-example.c-o示例编译 我使用bash环境进行编译和运行
可能您在执行程序时忘记了包含stdio.h?,而没有尝试重定向stdout,它是否会输出到您的控制台?执行
fprintf(stdout…)
与执行printf(…)
没有什么不同,因此还有其他错误。您确定没有打印到stderr
?第01行是否真的有$
?最可能的解释是,您的fprintf
打印到stderr
,而不是stdout
。如果是这样,这就是为什么您应该始终复制和粘贴代码示例的原因;重新输入它们会使人看不出真正的问题是什么。是的,当我在不重定向stdout的情况下执行程序时,它会将输出打印到控制台。您是否尝试重定向stdout和stderr$。/ExampleProgram&>file.txt
您的环境中似乎有东西正在重定向stdout>stderr
00.BASH4.1$./ExampleProgram &> file.txt
01.BASH4.1$ cat file.txt
02.BASH4.1$
#include <stdio.h>
int main()
{
fprintf(stdout,"Example\n");
return 0;
}