我是C ++的初学者,我有一个超出我的极限的问题。 我在GNU GCC下编译。 我用
#include<stdio.h>
也称为:
#include<cstdio>
在我的程序中的某个时刻,我告诉程序使用文件de_facut.txt作为文件:
freopen("de_facut.txt","r",stdin);
如何告诉程序使用控制台输入(默认情况下)而不是在文件中? 首先,我想从该文件中读取,但稍后在程序中我希望用户在控制台中输入输入。 我希望你理解我的问题,我不是很擅长英语。
答案 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);
答案 2 :(得分:0)
在Windows中,
freopen("CON","r",stdin);
此代码对我有用。它将标准输入切换到控制台。
附言:在此之前用于输入内容的文本文件必须以换行符结尾。