C语言,文件读写

本文介绍使用C语言进行文件输入输出重定向的方法,包括预处理指令控制的重定向及fopen方式的实现细节。通过两种不同方法对比,展示了如何从文件中读取数据并进行基本的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重定向版

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值