2014-03-02 92 views
-1

在编程竞赛的投入,他们提到了这一点:标准输入,标准输出,标准错误,我怎么能得到我的程序从一个文本文件,并输出到一个文本文件

“如何回答的问题? 在你出的问题要解决,你必须从一个文件.IN读取数据,并写在一个文件出结果。

我习惯的常规方式编程,在IDE中编写代码,编译,然后执行i看看发生了什么,并且它工作,但是我的答案被拒绝了。

有没有人知道这些file.IN和.OUT的东西?

我的意思是,我如何才能让我的程序采取从我写的。我想给该程序的DAT一个文本输入,并使其发送输出到另一个文本文件?

感谢

+2

你必须为你的库例程读取和写入文件或重新打开标准输出和文件。 – Hogan

+0

你能提供一个链接到比赛吗?你能证明你是如何实现输入/输出的吗? – moooeeeep

+0

@霍根我不明白,请澄清。 – Lelouch

回答

2

包括在你的头文件stdio.h

在您的主要功能中,在顶部包含以下几行。

freopen("input.in","r",stdin); 
freopen("output.out","w",stdout); 

在大多数的在线编程竞赛,输入是通过stdin输出通过stdout给出。但是,在这种情况下,您必须从文件(.in)读取输入并写入文件(.out)。 freopen将指定为第三个参数的流(stdin,stdout)重新打开流,并使用指定的文件。

编辑:示例代码从input.in获取输入并写入output.out。

#include <stdio.h> 
int main(){ 
freopen("input.in","r",stdin); 
freopen("output.out","w",stdout); 
int n; 
scanf("%d",&n); 
printf("%d\n",n); 
return 0; 
} 
+0

**谢谢!** 您向我展示了关注的主题。 我的理解是,我不必在我的主函数中输入函数(scanf ..),而是将数据放入input.in中? 与输出函数(printf ..)一样? – Lelouch

+0

不需要。您仍然需要在主函数中使用函数scanf,printf来读/写文件中的数据(.in和.out)。 scanf使用来自控制台的标准输入流stdin,而printf使用作为标准输出的标准输出到控制台。随着程序的其余部分,'freopen'命令将把流从控制台重定向到你的文件。所以,这意味着你不需要从控制台/终端输入信息。相反,粘贴任何你想在input.in中输入的输入,并期望输出中的所有输出。出。 –

+0

Magnificient **谢谢!** fscanf和fprintf以及FILE * f = NULL; ...?有什么不同? – Lelouch

相关问题