重定向版
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#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("%dn",min); } printf("%d %d %.3f n", min ,max ,(double) sum/n); return 0; }
重定义的部分被定义在#ifdef和#endif中,其含义为:只有定义了LOCAL,才能编译这两个之间的freopen语句,这就很方便了(竞赛中方便检查),当然也可删除LOCAL长定义,可以直接改成标准输入输出。有趣
fopen版
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#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
最后
以上就是正直裙子最近收集整理的关于C语言,文件读写重定向版的全部内容,更多相关C语言内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复