freopen函数:
使用不同的文件或模式重新打开流,即重定向
C++
//把一个字符串写入到文件中去: #include<iostream> using namespace std; int main(void) { /* redirect standard output to a file */ if(freopen("D:\\out.txt", "w", stdout) == NULL) fprintf(stderr,"error redirecting stdout\n"); /* this output will go to a file */ printf("This will go into a file.\n"); string s = "12345"; cout<<s<<endl; int a,b; while(cin>>a>>b){ cout<<a<<b<<endl; } /*close the standard output stream*/ fclose(stdout); return 0; }View Code
#include <iostream> using namespace std; int main(void) { FILE *fp; fp = freopen("D:\\in.txt","r",stdin); //freopen() 的返回值,如果与文件连接建立失败,返回NULL if(fp!=NULL){ //与文件连接建立成功 int c; cin>>c; //从文件中读入数据 cout<<c<<endl; //在屏幕上显示数据 }else{ cout<<"Open Error"<<endl; } //输出到控制台“CON” fp = freopen("CON","r",stdin); int a, b; cin>>a>>b; cout<<a<<b<<endl<<endl; return 0; }View Code
#include<iostream> using namespace std; int main() { freopen("D:\\in.txt", "r", stdin); freopen("D:\\out.txt", "w", stdout); int a, b; while (cin >> a >> b) cout << a + b << endl; fclose(stdin); fclose(stdout); return 0; }View Code
#include<iostream> using namespace std; int main() { int a, b; freopen("D:\\in.txt", "r", stdin); freopen("D:\\out.txt", "w", stdout); while (scanf("%d%d", &a, &b) == 2) printf("%d\n", a + b); fclose(stdin); fclose(stdout); return 0; }View Code
#include<iostream> using namespace std; int main() { int a, b; freopen("D:\\in.txt", "r", stdin); freopen("D:\\out.txt", "w", stdout); while (scanf("%d%d", &a, &b) == 2) printf("%d\n", a + b); //fclose(stdin); //fclose(stdout); freopen("CON", "r", stdin); freopen("CON", "w", stdout); printf("Hello World\n"); scanf("%d%d", &a,&b); return 0; }View Code
#include<iostream> using namespace std; int main() { int a, b; freopen("D:\\in.txt", "r", stdin); freopen("D:\\out.txt", "w", stdout); while (scanf("%d%d", &a, &b) == 2) printf("%d\n", a + b); //fclose(stdin); //fclose(stdout); freopen("CON", "r", stdin); freopen("CON", "w", stdout); printf("Hello World\n"); scanf("%d%d", &a,&b); return 0; }View Code
需要注意,这里其实没有真正关闭,只是再次重定向,回到控制台。
在windows/DOS,读文件后用freopen("CON", "r", stdin),写文件后 freopen("CON", "w", stdout)。
在linux中,控制台设备是 /dev/console:freopen("/dev/console", "r", stdin)。