先说个题外话,文件操作以及字符串与字符深入处理(就是那些什么puts(), getchar()什么的)是本人深入认识C++最后的两座大山。而今天先把重定向文件操作解决掉。
输入输出重定向恐怕是文件I/O操作中最简单的方法了,具体用法是现在main函数的开头加入两条语句,例如:
freopen("D:\\input.txt", "r", stdin); freopen("D:\\output.txt", "w", stdout);
其中第一个参数是输入、输出文件的路径;第二个是操作文件的模式(在这里,我们先了解“r”、“w”分别表示只读和只写;“rb”、“wb”表示只读和只写二进制文件);最后一个参数则是指向此文件的指针(FILE*),一般我们填写“stdin”和“stdout”即可。
输入输出重定向还有一个优点就是,在最后不需要调用fclose(),因为系统会自动帮你完成这一步。
好的,下面是一个超级简单的例子,来具体实践一下如何使用freopen()输入输出重定向。
【输入】两个整数a和b
【输出】a+b的结果
源代码如下(在Visual Studio 2008下编译通过):
#include <stdafx.h> #include <stdio.h> int main(void) { int a, b; freopen("D:\\abc.in", "rb", stdin); freopen("D:\\abc.out", "wb", stdout); scanf("%d%d", &a, &b); printf("%d is the result\n", a + b); return 0; }
这时,我们在D盘创建一个叫abc.in的文件,利用文本编辑器在里面输入66和34,然后保存;接着,编译并运行程序;运行完了之后,去看看结果?abc.out的内容是:100 is the result
如果有兴趣,大家可以去看看第二个参数还有哪些模式;但是,在本文中提到的模式是较为常用的,足以对付算法竞赛。OK,freopen()输入输出重定向的内容就暂时告一段落。
时间: 2024-10-22 12:14:09