1. 程式人生 > >程式碼中的輸入輸出(重定向、檔案流C/C++)

程式碼中的輸入輸出(重定向、檔案流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;
}

類繼承圖:


相關推薦

程式碼輸入輸出定向檔案C/C++

一.freopen的使用(C/C++) 函式原型:FILE *freopen( const char *path, const char*mode, FILE *stream ); 標頭檔案: std

Shell:函式輸入輸出定向檔案包含

函式 使用者可以定義函式,然後在Shell指令碼中進行呼叫。 shell中函式的定義格式如下: funcname() { action; [return int;] } 其中: 1. 可以帶function fun() 定義,也可以

程序通訊之二 管道技術第一篇 輸入輸出定向

                繼上一篇《程序通訊之一使用WM_COPYDATA C++及C#實現》,程序通訊之二將分為三篇文章講解如何使用管道技術來完成程序通訊功能。三篇文章目錄如下:本篇將介紹輸入輸出的重定向問題,先來看一個小小的例項,設有一個程式,該程式的輸入輸出為標準輸入輸出即從鍵盤上輸入,輸出到螢幕

Linux輸入輸出錯誤定向

Linux重定向是指修改原來預設的一些東西,對原來系統命令的預設執行方式進行改變,比如說簡單的我不想看到在顯示器的輸出而是希望輸出到某一檔案中就可以通過Linux重定向來進行這項工作。     Linux預設輸入是鍵盤,輸出是顯示器。你可以用重定向來改變這些設定。比如用wc命令的時候本來是要手動輸入一篇文字來

bash的基本功能定向管道符萬用字元

輸出重定向 注:linux中一切皆檔案,為方便記憶,在sh中以0,1,2分別表示這三種輸入輸出 管道符 注: 1. 可通過data;

Linux shell Bash的基本功能2 輸入輸出定向

字節 std 輸出 類型 行數 文件名 ash 示例 linu 1、標準輸入輸出 設備 設備文件名 描述符 類型 鍵盤 /dev/stdin 0 標準輸入 顯示器 /dev/stdout 1 標準輸出 顯示器 /dev/stde

關於C++輸入輸出的小結——讀寫檔案string

常用函式和類的介紹 getline(istream& , string&) 功能:將輸入流中的資料輸出到string物件中,直到遇到\n。可以用於從檔案或者螢幕中將一行文字接收並存儲下來。 常用的io類有iostream,fstream,

標準輸入輸出定向

standard 屏幕 建立 job ack 存在 linux 系統 標準 tracker 準輸入輸出 在 Linux 系統中: 標準輸入(stdin)默認為鍵盤輸入; 標準輸出(stdout)默認為屏幕輸出; 標準錯誤輸出(stderr)默認也是輸出到屏幕(上面的 st

Testlink工作基礎教程新建專案管理測試用例

先使用超級管理員登入,登入名和密碼均為admin。 一. (1)登入後,在test project一欄裡點選test project management建立一個新的專案。並給這個新建立的專案編輯基本資訊。Name填寫專案名稱,prefix為此專案新增一個字首,project descrip

Java的緩衝區直接緩衝區非直接緩衝區等

  如果將同步I/O方式下的資料傳輸比做資料傳輸的零星方式(這裡的零星是指在資料傳輸的過程中是以零星的位元組方式進行的),那麼就可以將非阻塞I/O方式下的資料傳輸比做資料傳輸的集裝箱方式(在位元組和低層資料傳輸之間,多了一層緩衝區,因此,可以將緩衝區看做是裝載位元組的集裝箱)。大家可以想象,如果我們要運

shell輸入輸出定向,>>><<>/dev/null2>&1<<end<<EOF等

轉載自:https://www.jb51.net/article/106373.htm https://blog.csdn.net/qq_31073871/article/details/80810306 其他參考:www.runoob.com/linux/linux-shell-io-re

shell輸入輸出定向,>>><<>/dev/null2>&1<<end<<EOF等

實際上,輸入輸出重定向中的3個標準檔案描述符,輸入0、正常輸出1、錯誤輸出2,這三個值經常被省略。 舉例: ls > shell_out 等價於: ls 1> shell_out 前言 相信大家經常能在shell指令碼中發現>/dev/nu

[Servlet]HttpServletResponse的二進位制輸出獲取應用程式的資源再輸出定向錯誤傳送

1. 使用getOutputStream輸出二進位制位元組流:     1) 有時相對瀏覽器輸出的直接是一個檔案資源而不是HTML等字串文件,此時就需要使用HttpServletResponse的getOutputStream進行位元組流輸出;     2) 輸出過程:  

Linux輸入輸出定向的問題

  Linux 命令預設從標準輸入裝置(stdin)獲取輸入,將結果輸出到標準輸出裝置(stdout)顯示。一般情況下,標準輸入裝置就是鍵盤,標準輸出裝置就是終端,即顯示器。 輸出重定向:命令的輸出不僅可以是顯示器,還可以很容易的轉移向到檔案,這被稱為輸出重定向。 &nb

分享個C++封裝Libcurl程式碼支援下載檔案GET\POST定向斷點續傳等功能

前言 前面分享過一個Windows上封裝Winhttp和WinInet API的程式碼,結果下載頁好評特別多(呵呵),謝謝大家賞臉。文章地址:開源一個C++實現的簡單HTTP協議處理庫,裡面有程式碼資源下載地址。但是,在實際開發過程中我發現WinHttp API嚴重依賴微

關於servlet定向轉發的地址問題

eas edi href nbsp res txt jsp eal 地址   先寫一個正斜杠"/",再判斷是服務器使用該地址還是網站使用該地址。   訪問網絡資源用/,訪問硬盤資源用\。   例如: 轉發: request.getRequestDispatc

Shell基礎:介紹歷史命令命令不全和別名通配符輸入輸入定向管道發和作業控制

基礎 一個 直接 1.5 寫到 否則 shel attr tle Shell的介紹 zsh、ksh(yum list |grep zsh 進行查看,然後可以相應的進行安裝) 命令歷史1. /root/.b

如何在各類空間輸入輸出數據讀書筆記2

default cit server 輸入與輸出 命令 pac 區別 讀書筆記 begin 一.思維導圖 二.常用知識點描述 1.DataAdapter對象 充當DataSet和數據源之間用於檢索和保存數據的橋梁。DataAdapter類代表用於填充DataSet以及更

Linux 學習之路:管道定向正則

管道及IO重定向 運算器、控制器:CPU 儲存器:RAM 輸入裝置/輸出裝置 程式:指令和資料 控制器:指令 運算器: 儲存器: 地址匯流排:記憶體定址 資料匯流排:傳輸資料 控制匯流排:控制指令 暫存器:CPU暫時儲存器 I/O:硬碟 系

SpringMVC篇:轉發與定向圖片檔案上傳Jsonjackson

注意: 專案:war 和 專案:war  exploded 兩者並不同,idea  執行 專案:war  exploded   <dependency> <groupId>org.