C语言,文件读写

重定向版

#include <stdio.h>
#define LOCAL
#define INF 1000000
int main()
{
	#ifdef LOCAL    //只有定义了符号LOCAL才可以编译#ifdef 至#endif之间的语句 
	freopen("D:\\input.txt","r",stdin);//文件读入   输入重定向
    freopen("D:\\output.txt","w",stdout);//文件写入  输出重定向
	#endif
	
	int x ;
	int n = 0;
	int sum = 0 ;
	int max = -INF;          //一个极小的值 
	int min = INF;      //一个极大的值 
	while ( scanf("%d",&x) == 1)
	{
		sum+= x;
		if ( x> max ) max = x;
		if( x< min ) min = x;
		n++;
		printf("%d\n",min);
	}
	
	printf("%d %d %.3f \n", min ,max ,(double) sum/n);
	 return 0;

 } 

重定义的部分被定义在#ifdef和#endif中,其含义为:只有定义了LOCAL,才能编译这两个之间的freopen语句,这就很方便了(竞赛中方便检查),当然也可删除LOCAL长定义,可以直接改成标准输入输出。有趣

fopen版

#include <stdio.h>
#define INF 1000000
int main()
{
	FILE *fin, *fout;
	fin = fopen("D:\\input.txt", "rb");
	fout = fopen("D:\\output.txt", "wb" );
	int x ;
	int n = 0;
	int sum = 0 ;
	int max = -INF;          //一个极小的值 
	int min = INF;      //一个极大的值 
	while ( fscanf( fin ,"%d",&x) == 1)
	{
		sum+= x;
		if ( x> max ) max = x;
		if( x< min ) min = x;
		n++;
	}
	
	fprintf( fout , "%d %d %.3f \n", min ,max ,(double) sum/n);
	fclose(fin);     //关闭文件
	fclose(fout);
	 return 0;

 } 

划重点:除了

    FILE *fin, *fout;
    fin = fopen("D:\\input.txt", "rb");
    fout = fopen("D:\\output.txt", "wb" );

还要改变输入输出函数,相较于麻烦,稍显繁琐,但可以反复打开并读写文件,这是重定向版,可望不可即滴,嘿嘿

同理,改为标准输入输出只需,改变   fin fout的 赋值,即改变语句为    fin = stdin;fout = stdout;

                                                                                                                 2022年1月18日16:05:55

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值