Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c程序中不使用标准输出重定向的Fprintf函数_C_Printf_Pipe - Fatal编程技术网

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

我在Unix中创建了一个C程序,其中fprintf声明如下:

       #Include<stdio.h>
        ...
       fprintf(stdout,"Example\n");
      $./ExampleProgram > file.txt
预期的结果是在文件中有is
Example
,但是输出是这样的(我在下面的命令提示符行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;

}