一段测试代码,用来测试 freopen("out.txt", "w", stdin); 对输入的影响
#include <bits/stdc++.h>
using namespace std;
int main()
{
// freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdin);
int a=-100;
scanf("%d",&a);
printf("%d",a);
}
调试图:
a初始化为-100,此时控制台无法输入,可直接“下一步”
a的值一直为初始值-100
可一旦注释掉freopen("out.txt", "w", stdin);
整个程序就正常了(cin输入也有这个问题)
还发现freopen("in.txt", "r", stdin);并不会影响scanf输入,程序正常。
困扰了我好久,无意间注释掉这行才发现。
小白求救各位大神原因
很简单啊,因为freopen是调用文件,所以使用文件里的数据进行输入,cin则是调用的文件里的数据,所以不用自己输入。
我的文件里有数据,并且a的值一直为初始值-100
啥意思
是有啥问题
你要拿freopen() 这个函数来干什么? 具体要达到什么目的? 请说清楚。
另外要仔细读文档: freopen, _wfreopen | Microsoft Docs