关于 stdin 重定向的问题

#include "iostream"
using namespace std ;

int main()
{
	char str[128] ;

	freopen( "a.txt" , "r" , stdin ) ;
	cin >> str ;
	cout << str << endl ;
	fclose(stdin) ;


	freopen( "b.txt" , "r" , stdin ) ;
	cin >> str ;
	//scanf( "%s" , str ) ; 如果用scanf 是可以的
	cout << str << endl ;	
	return 0 ;
}

a.txt 里只有一行字符串 “aaaaaaaaaaaaaaa”
b.txt 里只有一行字符串 “bbbbbbbbbbbbbbb”
但是只看输出 a.txt 里的 求解。

如果使用注释掉的那一行,注释掉其前面的 cin >> str 的话 , 则两个文件里的都打印出来了 。求解。

阅读 5.5k
1 个回答
#include "iostream"
#include<stdio.h>
using namespace std ;

int main()
{
	char str[128] ;

	freopen( "a.txt" , "r" , stdin ) ;
	cin >> str ;
	cout << str << endl ;
	fclose(stdin) ;


	freopen( "b.txt" , "r" , stdin ) ;
	cin >> str ;
	//scanf( "%s" , str ) ; 如果用scanf 是可以的
	cout << str << endl ;   
	return 0 ;
}

请输入图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题