2013-10-24 22 views
0
#include<iostream> 
using namespace std; 

int main() 
{ 
    freopen("input.txt","r",stdin); 
    freopen("output.txt","w",stdout); 

    int a,b; 
    cin >> a >> b; 
    cout << a+b;  
    return 0; 
} 

当我从终端(Mac)编译它时,它不是从input.txt读取的,而是不写入output.txt。问题是什么?如何查看在终端上编译的C++程序的输出

+0

检查freopen'和'errno'的'的返回值。 – rightfold

+0

@没有右撇子如何检查它。我第一次在终端上工作。在我使用其他程序之前。 – Chingy

+0

呃,用'if'和'errno'。 vOv – rightfold

回答

0

您忘记关闭文件摆好

fclose (stdin); 
fclose (stdout); 

注:FCLOSE()函数的流刷新指向标准输出(使用fflush写任何缓冲的输出数据并关闭底层的文件描述符

+2

退出程序应自动关闭文件,因此OP不需要。 – user2784234

+0

在嵌入式平台的美丽世界中,真的很难说会发生什么。但是,如果我处于您的情况,我只需手动测试以查看文件ID是否真的被释放。而且,如果空间很重要,也许您可​​以在其他地方记录这一事实。 –

+0

相同的代码工作在Linux上的文件。 (在Linux 2.6.18-308.el5#1 x86_64 x86_64 x86_64 GNU/Linux上测试) –

0

@Chingy,我看到了你的截图,请看这documentation关于g ++的基本介绍请注意,编译和执行一个程序是不同的实例。您按照屏幕截图正确执行操作。
1)g ++ 1.cpp。

此步骤将创建一个可执行文件(a.out),您需要单独运行该文件才能从程序中获得所需的行为。

请按以下步骤执行程序:
2)./a.out

+0

应该写什么命令立即显示答案IN终端。但程序应该从input.txt读取输入数据 – Chingy

+0

删除'freopen( “output.txt”,“w”,stdout);'并重新编译并重新执行。 – user2784234

+0

https://www.dropbox.com/s/as1crr79x4hdbxr/2.jpg – Chingy

相关问题