文件操作
文件的概念
文件是根據特定的目的而收集在一起的有關數據的集合。C/C++ 把每一個文件都看成是一個有序的字節流,每個文件都是以 文件結束標誌(EOF)結束,如果要操作某個文件,程序應該首先打開該文件,每當一個文件被打開後(請記得關閉打開的文件),該文件就和一個流關聯起來,這裏的流實際上是一個字節序列。
C/C++ 將文件分為文本文件和二進制文件。文本文件就是簡單的文本文件(重點),另外二進制文件就是特殊格式的文件或者可執行代碼文件等。
文件的操作步驟
1、打開文件,將文件指針指向文件,決定打開文件類型;
2、對文件進行讀、寫操作(比賽中主要用到的操作,其他一些操作暫時不寫);
3、在使用完文件後,關閉文件。
freopen 函數
函數簡介
函數用於將指定輸入輸出流以指定方式重定向到文件,包含於頭文件 stdio.h (cstdio) 中,該函數可以在不改變代碼原貌的情況下改變輸入輸出環境,但使用時應當保證流是可靠的。
函數主要有三種方式:讀、寫和附加。
命令格式
1 | |
參數説明
filename: 要打開的文件名mode: 文件打開的模式,表示文件訪問的權限stream: 文件指針,通常使用標準文件流 (stdin/stdout) 或標準錯誤輸出流 (stderr)- 返回值:文件指針,指向被打開文件
文件打開格式(選讀)
r:以只讀方式打開文件,文件必須存在,只允許讀入數據 (常用)r+:以讀/寫方式打開文件,文件必須存在,允許讀/寫數據rb:以只讀方式打開二進制文件,文件必須存在,只允許讀入數據rb+:以讀/寫方式打開二進制文件,文件必須存在,允許讀/寫數據rt+:以讀/寫方式打開文本文件,允許讀/寫數據w:以只寫方式打開文件,文件不存在會新建文件,否則清空內容,只允許寫入數據 (常用)w+:以讀/寫方式打開文件,文件不存在將新建文件,否則清空內容,允許讀/寫數據wb:以只寫方式打開二進制文件,文件不存在將會新建文件,否則清空內容,只允許寫入數據wb+:以讀/寫方式打開二進制文件,文件不存在將新建文件,否則清空內容,允許讀/寫數據a:以只寫方式打開文件,文件不存在將新建文件,寫入數據將被附加在文件末尾(保留 EOF 符)a+:以讀/寫方式打開文件,文件不存在將新建文件,寫入數據將被附加在文件末尾(不保留 EOF 符)at+:以讀/寫方式打開文本文件,寫入數據將被附加在文件末尾ab+:以讀/寫方式打開二進制文件,寫入數據將被附加在文件末尾
使用方法
讀入文件內容:
1 2 | |
輸出到文件:
1 2 | |
關閉標準輸入/輸出流
1 2 | |
注
printf/scanf/cin/cout 等函數默認使用 stdin/stdout,將 stdin/stdout 重定向後,這些函數將輸入/輸出到被定向的文件
模板
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
fopen 函數(選讀)
函數大致與 freopen 相同,函數將打開指定文件並返回打開文件的指針
函數原型
1 | |
各項參數含義同 freopen
可用讀寫函數(基本)
fread/fwritefgetc/fputcfscanf/fprintffgets/fputs
使用方式
1 2 3 4 5 6 7 8 | |
C++ 的 ifstream/ofstream 文件輸入輸出流
使用方法
讀入文件內容:
1 2 | |
輸出到文件:
1 2 | |
關閉標準輸入/輸出流
1 2 | |
模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
參考資料
- 信息學奧賽一本通
本页面最近更新:,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:Ir1d, cqnuljs, akakw1, MingqiHuang, Chrogeek, henrytbtrue, Planet6174, StudyingFather
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用