导图社区 文件重定向
这是一篇关于文件重定向的思维导图,主要内容有竞赛中的数据输入输出、竞赛中为什么推荐用格式化输出/输入、程序竞赛中的小细节、文件操作的意义等。
这是一篇关于九年级(上)化学:走进化学世界的思维导图。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
11文件重定向
上节课回顾
01-肥宅快乐水
02-三角形面积
03-月份天数
04-判断三角形
05-密码翻译
本节课知识点
竞赛中的数据输入输出
定义
正常,我们如果要输入一个数据
使用cin输出一个数据需要使用cout
这样在数据量少的时候没有任何问题
但是当我们的一个输入的频次达到千万级以上
这个时候,cin和cout就比较耗费时间了
所以我们正常竞赛当中,除了去使用cin和cout以外
还有一种特殊的数据输入输出方式——scanf和printf
名称
更高效率的输入&输出
竞赛中为什么推荐用格式化输出/输入
原因
每个玩具由若干个零件来组成
组装玩具时只需要去对应位置“获取”即可
标准化输入/输出
那这种根据“需求”
提前设置好了所有流程的获取方式
这样效率自然会更高
那这种输入/输出方式我们就称之为“标准化输入/输出”
方法
标准化输出printf()
引入头文件
#include <cstdio>
按照格式进行输出
printf("格式控制字符串",输出列表);
输出文字
printf(“雷!霆!嘎!巴!”);
输出变量
printf("%d",a);
使用printf和cout进行数据输出,操作对比
输出int型变量a
printf("%d",a);
cout<<a;
输出long long型变量b
printf("%ld",b);
cout<<b;
输出float型变量f
printf("%f",f);
cout<<f;
输出double型变量d
printf("%lf",d);
cout<<d;
输出double型变量d并保留两位小数
printf("%.21f",d);
cout<<fixed<<setprecision(2)<<d;
输出char型变量a
printf("%c",a);
输出string型变量a
printf("%s",a);
cout<<s;
先输出int型变量a,再输出double型变量b,使用空格隔开
printf(%d %lf",a,b);
cout<<a<<" "<<b;
以"a="的形式输出int型变量a的值
printf("a=%d",a);
cout<<"a="<<a;
标准化输入scanf()
按照格式进行输入
scanf("格式控制字符串",地址列表);
这句话实际上是没有任何作用的
scanf("我是李鹏老师");
&a和&b分别表示变量a和变量b的地址
这个地址就是编译系统在内存中
分配给变量a,b的地址空间
使用scanf和cin进行数据输入,操作对比
输入int型变量a
scanf("%d",&a);
cin>>a;
输入long long型变量b
scanf("%ld",&b);
cin>>b;
输入float型变量f
scanf("%f",&f);
cin>>f;
输入double型变量d
scanf("%lf",&d);
cin>>d;
输入char型变量a
scanf("%c",&a);
输入string型变量a
scanf("%s",&a);
cin>>s;
先输入int型变量a,再输入double型变量b
scanf("%d%lf",&a,&b);
cin>>a>>b;
程序竞赛中的小细节
文件操作的意义
步骤
1.打开文件,将文件指针指向文件,决定打开文件类型
2.对文件进行读、写操作
3.在使用完文件后,关闭文件
文件重定向 freopen()
freopen(const char*filename,const char*mode,FILE*stream);
filename:要打开的文件名
mode:文件打开的模式(r/w),表示文件访问的权限
stream:文件指针,通常使用标准文件流(stdin/stdout)或标准错误输出流(stderr)
stdin是标准输入流,默认为键盘,但是通过调用freopen进行重新定向把标准输出流指向了文件
stdout是标准输出流,默认为屏幕,但是通过调用freopen进行重新定向把标准输出流指向了文件
stderr是标准错误流,一般会把屏幕设为默认
返回值:文件指针,指向被打开文件
用法
1显示“文件拓展名”
2桌面右键->新建(W)->文本文档
3修改“新建文本文档.txt”后缀为“.in”
例题
读写文件
反向输出
文件操作注意事项
1.务必在比赛之前了解文件读写的相关规定
是标准输入输出?
还是文件输入输出?
文件输入输出中是否禁止用重定向访问?
2.请注意,不是所有的算法竞赛都允许使用程序读写文件
甚至有的竞赛允许访问文件
但是不允许使用freopen这样的重定向方式读写文件
“自动”重定向访问
刚刚在书写的时候
大家是不是都觉得我们这个地方的检验非常的麻烦?
每次将对应的输出直接输出到文档当中并且还不能单独的来去调试
这里交给大家一种简单的方法
照片
fopen()
FILE*fopen(const char*path,const char*mode)
path:要打开的文件路径(即对应文件名称)
mode:文件打开的模式(r/w),表示文件访问的权限
递增排序
数据统计
重定向freopen()和fopen()
各自优劣
重定向的方法写起来简单,自然,但是不能同时读写文件和标准输入输出
fopen的写法稍显复杂,但是灵活性较大(例如可以反复打开并读写文件)
如果想要把fopen版的程序改写读写标准输入输出
只需要赋值"fin=stdin;","fout=stdout;"
不需要调用fopen和fclose