1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 代码中的输入输出(重定向 文件流C/C++)

代码中的输入输出(重定向 文件流C/C++)

时间:2023-10-17 12:56:59

相关推荐

代码中的输入输出(重定向 文件流C/C++)

一.freopen的使用(C/C++)

函数原型:FILE *freopen( const char *path, const char*mode, FILE *stream );

头文件: stdio.h

参数:

path: 文件名,用于存储输入输出的自定义文件名。

mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。

stream: 一个文件,通常使用标准流文件。

返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。一般不使用。

功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。

例:

freopen("data.in", "r", stdin);//重定向标准输入为data.in文件

freopen("data.out", "w", stdout);//重定向标准输出为data.out文件

[cpp]view plaincopy print? //程序功能是统计输入的序列串中的最大值、最小值和序列串的平均值#defineLOCAL#include<stdio.h>//#include<iostream>#defineINF1000000000//usingnamespacestd;intmain(void){#ifdefLOCALfreopen("data.in","r",stdin);freopen("data.out","w",stdout);#endifintx,n=0,min=INF,max=-INF,s=0;while(scanf("%d",&x)==1){//while(cin>>x){s+=x;if(x<min)min=x;if(x>max)max=x;//printf("x=%d,min=%d,max=%d\n",x,min,max);++n;}printf("%d%d%.3f\n",min,max,(double)s/n);//cout<<min<<""<<max<<""<<(double)s/n<<endl;return0;}

二.文件流使用(C)

fopen函数

函数原型:FILE * fopen(const char * path, const char * mode);

头文件: stdio.h

参数:

path: 文件名。

mode: 文件打开的模式。

返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。

[cpp]view plaincopy print? //程序功能是统计输入的序列串中的最大值、最小值和序列串的平均值#include<stdio.h>#defineINF1000000000intmain(void){FILE*fin,*fout;fin=fopen("data.in","rb");fout=fopen("data.out","wb");intx,n=0,min=INF,max=-INF,s=0;while(fscanf(fin,"%d",&x)==1){s+=x;if(x<min)min=x;if(x>max)max=x;//printf("x=%d,min=%d,max=%d\n",x,min,max);++n;}fprintf(fout,"%d%d%.3f\n",min,max,(double)s/n);fclose(fin);fclose(fout);return0;}

三.C++中文件流的使用

在C++中文件和string都可以转换为对应的输入输出流,由此可以简单对文件和string对象进行操作。具体的操作为: 1. 创建对应的流对象(文件流、String流,如:ifstream,ofstream,istringstream,ostringstream等) 2. 用对应的文件名(或string)初始化该流对象 经过上面两步,就可以很简单的对对应的流对象进行操作,跟标准输入输出流的操作方式一致(与cin、cout的使用方式一致)[cpp]view plaincopy print? #include<iostream>#include<fstream>#defineINF1000000000usingnamespacestd;intmain(void){ifstreamfin("data.in");ofstreamfout("data.out");intx,n=0,min=INF,max=-INF,s=0;while(fin>>x){s+=x;if(x<min)min=x;if(x>max)max=x;//printf("x=%d,min=%d,max=%d\n",x,min,max);++n;}fout<<min<<""<<max<<""<<(double)s/n;fout.close();fin.close();return0;}类继承图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。