???(iPhone)????? 2021-01-21 23:02 采纳率: 0%
浏览 194

freopen影响scanf输入,怎么回事?

一段测试代码,用来测试   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输入,程序正常。

困扰了我好久,无意间注释掉这行才发现。

 

小白求救各位大神原因

  • 写回答

5条回答 默认 最新

  • 经常有点小迷糊 2021-01-21 23:04
    关注

    很简单啊,因为freopen是调用文件,所以使用文件里的数据进行输入,cin则是调用的文件里的数据,所以不用自己输入。

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?