【问题标题】:How to view the output of c++ program which compiled on terminal如何查看在终端上编译的c++程序的输出
【发布时间】:2013-11-03 13:44:34
【问题描述】:
#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。有什么问题?

【问题讨论】:

  • 检查freopenerrno的返回值。
  • @not-rightfold 如何查看。我第一次在终端上工作。在我使用其他程序之前。
  • 嗯,好吧,使用iferrno。 vOv
  • 您是否因缺少#include 而出现任何编译错误?添加以下代码:
  • freopen 在 stdio.h 中声明

标签: c++ macos terminal g++ output


【解决方案1】:

@Chingy,我看到了你的截图。请查看此documentation 了解 g++ 的基本介绍。请注意,程序的编译和执行是不同的实例。

第一步是编译,您按照屏幕截图正确执行。
1) g++ 1.cpp.

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

请按如下方式执行程序:
2) ./a.out

【讨论】:

  • 应该写什么命令来立即在终端中显示答案。但是程序应该从 input.txt 读取输入数据
  • 去掉freopen("output.txt","w",stdout);重新编译重新执行。
  • 看到了您的第二个保管箱。删除此帖子中建议的所有更改。使用“编译”和“执行”步骤运行您的原始程序,并检查“output.txt”。
  • 是的。有用!!!您知道执行结果的任何优化方法吗?我的意思是只有一个命令可以完成所有这些事情,因为编译然后 ./a.out 执行
  • @Chingy,没有。这就是编译语言(如 C++)和解释语言(如 Python)之间的区别。请谷歌了解更多信息。
【解决方案2】:

你忘记优雅地关闭文件

fclose (stdin);
fclose (stdout);

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

【讨论】:

  • 退出程序应该会自动关闭文件,所以OP不需要。
  • 在美丽的嵌入式平台世界里,真的很难说会发生什么。但是,如果我处于您的情况,我只需手动测试以查看文件 ID 是否真的被释放。而且,如果空间如此重要,也许您可​​以在其他地方记录这一事实。
  • 相同的代码在 linux 上工作文件。 (在 Linux 2.6.18-308.el5 #1 x86_64 x86_64 x86_64 GNU/Linux 上测试)
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 2023-03-26
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 2014-12-12
相关资源
最近更新 更多