我在Unix
中创建了一个C程序,其中fprintf声明如下:
#Include<stdio.h>
...
fprintf(stdout,"Example\n");
问题是当我尝试将stdout
重定向到另一个文件时:
$./ExampleProgram > file.txt
预期的结果是在文件中有Example
,但是输出就像这样(我输入命令promt第00和02行):
00. BASH4.1$./ExampleProgram > file.txt
01. Example
02. BASH4.1$cat file.txt
03. BASH4.1$
如果我重定向stderr,输出就像这样:
00.BASH4.1$./ExampleProgram &> file.txt
01.BASH4.1$ cat file.txt
02.BASH4.1$
根本没有输出
知道为什么会这样吗?
编辑:问题可能是fprintf的缓冲区,但我已尝试使用fflush(stdout)
进行修复,但它无法正常工作
EDIT2:添加了更多详细信息。
答案 0 :(得分:0)
我刚刚测试了您上面列出的示例。它运作得很好。 这是示例测试c文件的代码:
#include <stdio.h>
int main()
{
fprintf(stdout,"Example\n");
return 0;
}
编译:gcc example.c -o example
我使用bash环境来编译和运行。
也许你忘了包含stdio.h?