如何告诉程序停止使用freopen

时间:2015-10-31 19:30:07

标签: c++ freopen

我是C ++的初学者,我有一个超出我的极限的问题。 我在GNU GCC下编译。 我用

#include<stdio.h>

也称为:

#include<cstdio>

在我的程序中的某个时刻,我告诉程序使用文件de_facut.txt作为文件:

freopen("de_facut.txt","r",stdin);

如何告诉程序使用控制台输入(默认情况下)而不是文件中? 首先,我想从该文件中读取,但稍后程序中我希望用户在控制台中输入输入。 我希望你理解我的问题,我不是很擅长英语。

3 个答案:

答案 0 :(得分:2)

有关标准输出How to redirect the output back to the screen after freopen("out.txt", "a", stdout)的同样问题,但两者的答案是相同的 - 没有干净的方法吗http://c-faq.com/stdio/undofreopen.html

由于您确实需要稍后在程序中从控制台读取,我建议您只打开文件,就像文件一样。如果您想使用stdin从文件中读取的原因是不必将文件句柄传递给fscanf等函数,您可以考虑使用fstream工具 - 代码可以看起来完全正确当从控制台阅读时:

#include <iostream>
#include <fstream>

using namespace std;
int main()
{
    int x;
    cin >> x; // reading from console
    {
        ifstream cin("input.txt");
        cin >> x; // reading from file
    }
    cin >> x; // again from console

    return 0;
}

答案 1 :(得分:1)

使用fclose()

FILE *fp=freopen("data.txt","r",stdin);
/*your code here*/
fclose(fp);

参考:C library function - freopen()

答案 2 :(得分:0)

在Windows中,

freopen("CON","r",stdin);

此代码对我有用。它将标准输入切换到控制台。
附言:在此之前用于输入内容的文本文件必须以换行符结尾。