2015-10-31 4 views
1

Я начинаю на C++, и у меня есть вопрос, который выходит за мои пределы. Я компилирую под GNU GCC. Я используюКак я могу сказать программе прекратить использование freopen

#include<stdio.h> 

также известен как:

#include<cstdio> 

В какой-то момент в моей программе я говорю программу использовать файл de_facut.txt как в файле:

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

Как я могу сказать программе использовать консоль для ввода ввода (по умолчанию) вместо в файле? Сначала я хочу прочитать из этого файла, но позже в программе я хочу, чтобы пользователь вводил ввод в консоли. Надеюсь, вы поняли мою проблему, я не очень хорошо разбираюсь в английском.

+0

Почему вы используете 'freopen' вообще? На самом деле, почему вы используете функции C вообще? Это C++! Используйте 'std :: cin' для ввода в консоль и' std :: ifstream' для ввода вашего файла. Ничего сложнее, чем это ... –

+0

Я не хочу использовать потоки. Я решил свою проблему, прочитал мой комментарий для другого парня (если хочешь). –

+0

Если вы изучаете C++, вы должны изучить C++. Конечно, это зависит от вас, но если вы хотите развивать рыночные навыки, тогда вы можете подумать о том, чтобы выслушать экспертов;) –

ответ

2

Тот же вопрос был задан о STDOUT: How to redirect the output back to the screen after freopen("out.txt", "a", stdout), но ответ одинаков для обоих - нет чистого способа сделать это: http://c-faq.com/stdio/undofreopen.html

Поскольку вы должны прочитать из консоли позже в программе, я предлагаю вам просто открыть файл, как, ну, файл. Если причиной, по которой вы хотите использовать stdin для чтения из файла, является удобство отсутствия необходимости передавать дескриптор файла таким функциям, как fscanf, вы можете вместо этого использовать средства управления потоком - код может выглядеть так же, как при чтении с консоли:

#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; 
} 
+0

Я боюсь, что вы вообще не поняли мой вопрос ... В любом случае спасибо за помощь, я решил проблема сама ... Я использую теперь глобальный FILE * fin; и FILE * fout; и закройте файлы, где мне нужно читать с консоли. –

+0

@ the_young_programmer: Альфа прекрасно понял вопрос. То, что вам не нравится, ответ не делает его менее точным. Кроме того, если вы нашли решение, вы должны опубликовать его как ответ, чтобы он мог помочь будущим читателям. Когда вы отправляете вопрос здесь, это не только для вас! –

Смежные вопросы