代码中的输入输出(重定向、文件流C/C++)

一.freopen的使用(C/C++)

函数原型:FILE *freopen( const char *path, const char*mode, FILE *stream );

头文件: stdio.h

参数:

path: 文件名,用于存储输入输出的自定义文件名。

mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。

stream: 一个文件,通常使用标准流文件。

返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。一般不使用。

功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。

例:

  freopen("data.in", "r", stdin); //重定向标准输入为data.in文件

        freopen("data.out", "w", stdout); //重定向标准输出为data.out文件

// 程序功能是统计输入的序列串中的最大值、最小值和序列串的平均值

#define LOCAL
#include <stdio.h>
// #include <iostream>
#define INF 1000000000
// using namespace std;

int main (void) {
#ifdef LOCAL 
	freopen ("data.in", "r", stdin);
	freopen ("data.out", "w", stdout);
	#endif


	int x, n = 0, min = INF, max = -INF, s = 0;
	while (scanf ("%d", &x) == 1) {
	// while (cin >> x) {
		s += x;
		if (x < min) min = x;
		if (x > max) max = x;

		//printf ("x = %d, min = %d, max = %d\n", x, min, max);

		++n;
	}


	printf ("%d %d %.3f\n", min, max, (double)s/n);
	// cout << min << " " << max << " " << (double)s / n << endl;

	return 0;
}

二.文件流使用(C)

fopen函数

函数原型:FILE * fopen(const char * path, const char * mode);

头文件: stdio.h

参数:

path: 文件名。

mode: 文件打开的模式。


返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。

// 程序功能是统计输入的序列串中的最大值、最小值和序列串的平均值

#include <stdio.h>
#define INF 1000000000

int main (void) {
	FILE *fin, *fout;
	fin = fopen ("data.in", "rb");
	fout = fopen ("data.out", "wb");

	int x, n = 0, min = INF, max = -INF, s = 0;
	while (fscanf (fin, "%d", &x) == 1) {
		s += x;
		if (x < min) min = x;
		if (x > max) max = x;

		//printf ("x = %d, min = %d, max = %d\n", x, min, max);
		++n;
	}

	fprintf (fout, "%d %d %.3f\n", min, max, (double)s/n);
	fclose (fin);
	fclose (fout);

	return 0;
}

三.C++中文件流的使用

在C++中文件和string都可以转换为对应的输入输出流,由此可以简单对文件和string对象进行操作。具体的操作为:
1. 创建对应的流对象(文件流、String流,如:ifstream,ofstream,istringstream,ostringstream等)
2. 用对应的文件名(或string)初始化该流对象

经过上面两步,就可以很简单的对对应的流对象进行操作,跟标准输入输出流的操作方式一致(与cin、cout的使用方式一致)

#include <iostream>
#include <fstream>
#define INF 1000000000

using namespace std;

int main (void) {
	ifstream fin("data.in");
	ofstream fout ("data.out");

	int x, n = 0, min = INF, max = -INF, s = 0;
	while (fin >> x) {
		s += x;
		if (x < min) min = x;
		if (x > max) max = x;

		//printf ("x = %d, min = %d, max = %d\n", x, min, max);
		++n;
	}

	fout << min << " " << max << " " << (double)s/n;
	fout.close ();
	fin.close ();

	return 0;
}


类继承图:




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 你可以使用以下代码将标准输出定向到终端: freopen("/dev/tty", "w", stdout); 其,"/dev/tty" 是指向当前终端设备的文件描述符,"w" 表示以写模式打开文件,stdout 是标准输出。 ### 回答2: 在C++,可以使用`freopen`函数将程序的标准输出定向到终端。 首先,需要包含头文件`<cstdio>`。接下来,在程序的适当位置调用`freopen`函数,将标准输出文件(stdout)定向到终端。 ``` #include <cstdio> int main() { // 将标准输出定向到终端 freopen("/dev/tty", "w", stdout); // 程序的其他代码 return 0; } ``` 在上述代码,`freopen`的第一个参数是定向的目标文件,其`/dev/tty`表示当前终端。第二个参数"w"表示以写方式打开文件,第三个参数`stdout`表示要定向的输出。 通过调用`freopen`函数,程序的标准输出将被定向到终端,即使之后使用`cout`或`printf`等打印函数来输出数据,输出也会直接显示在终端上。 需要注意的是,一旦调用`freopen`函数将标准输出定向到终端后,之前已经打开的文件指针(如`ofstream`)将会被关闭,需要新打开对应文件后才能操作。 另外,`freopen`函数也可以将标准输入定向到终端,方法类似。只需将第二个参数的`"w"`改为`"r"`,第三个参数改为`stdin`即可。 ### 回答3: 在C/C++编程,可以使用freopen函数来将标准输出定向到终端。 下面是一个简单的示例代码: ```c #include <stdio.h> int main() { freopen("/dev/tty", "w", stdout); printf("Hello, World!\n"); // 这行代码输出定向到终端 return 0; } ``` 上述代码,`freopen("/dev/tty", "w", stdout)`的作用是将标准输出定向到终端。其,`/dev/tty`是Linux系统系统终端的设备文件路径。 在调用`printf`函数输出时,输出将被定向到终端,而不是默认的标准输出。 需要注意的是,`freopen`函数需要在所有输出操作之前调用,以确保输出被正确定向到终端。 以上就是使用`freopen`函数将标准输出定向到终端的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值