C 語言讀取文字檔案及簡單格式化處理

2021-10-02 17:09:56 字數 2043 閱讀 3375

c語言中,基本輸入輸出只需要包含stdio.h乙個標頭檔案即可,包含了標準輸入輸出系列 stdin,stdout,stderr ,以及通用檔案操作支援,窄字元輸入輸出基本操作相關函式。

i/o 流是 file 型別物件,只能通過file*型別指標訪問及操作。每個流與外部物理裝置(檔案、標準輸入流、印表機、序列埠等)關聯。

在系統指定的需要訪問裝置的資訊(例如 posix 檔案描述符)外,每個流物件保有下列資訊:

(c95)字元寬度:未設定、窄或寬。

緩衝狀態:無緩衝、行緩衝、全緩衝。

緩衝區,可為外部的使用者提供緩衝區所替換。

i/o 模式:輸入、輸出或更新(兼具輸入與輸出)。

二進位制/文字模式指示器。

檔案尾指示器。

錯誤狀態指示器。

檔案位置指示器( fpos_t 型別物件),對於寬字元流包含剖析狀態( mbstate_t 型別物件(c95))。

(c11)在多個執行緒讀、寫、尋位或查詢流時避免資料競爭的再入鎖。

文字流是被組合進行(零或更多字元加上終止的 『\n』 )的有序字串行。最後一行是否要求終止的 『\n』 是實現定義的。可能必須在輸入與輸出時新增、切換或刪除字元,以符合 os 中的表示文字(尤其是 windows os 上的 c 流在輸出時將 \n 轉換為 \r\n ,輸入時將 \r\n 轉換為 \n )。

二進位製流是能通透地記錄內部資料的有序字串行。從二進位製流讀取的資料始終與先前寫出到該流者比較相等。僅允許實現後附一些空字元到流結尾。寬二進位製流不必終止於初始遷移狀態。

posix 實現不辨別文字與二進位製流(無 \n 或任何其他字元的特殊對映)。

開啟檔案

file *

fopen

(const

char

*filename,

const

char

*mode )

;`

關閉檔案

int

fclose

( file *stream )

;

**返回當前的檔案位置指示值 **:

long

ftell

( file *stream )

;

設定檔案位置指示器為 offset 所指向的值

// @parm stream	-	要修改的檔案流

// @parm offset - 相對 origin 遷移的字元數

// @parm origin - offset 所加上的位置。它能擁有下列值之一: seek_set 、 seek_cur 、 seek_end

intfseek

( file *stream,

long offset,

int origin )

;

**檢查是否已抵達給定檔案流的結尾 **:

int

feof

( file *stream )

;

#include

#include

intmain

(void

)int c;

// 注意:int,非char,要求處理eof

while

((c =

fgetc

(fp))!=

eof)if(

ferror

(fp)

)puts

("i/o error when reading");

elseif(

feof

(fp)

)puts

("end of file reached successfully");

fclose

(fp)

;}

C 讀取文字檔案

很多初學c 的同學,對於讀取文字檔案,並按照行處理資料總是有點不知如何開始,作為c 的初學者,自己在這裡做一點筆記。其實利用c 按行讀取文字檔案其實很簡單。假設有乙個文字檔案,如下所示 1 2 3 2 3 4 3 4 5 5 6 7 7 8 9 檔名為split.txt 目的 按照行讀取資料,並乙個...

C 讀取超大文字檔案

現有乙個超大txt檔案,內部以 t分格,每行244個值,一共250萬行,大小1.9g,第一行是列名,現在要將每一行的資料讀出來進行處理,如果一次性讀進記憶體肯定是不行的。目錄 讀第一行 讀後續行 遍歷方法 使用感受 參考 string headerline file.readlines path f...

如何讀取文字檔案 C

本文是我之前撰寫的有關如何建立文字檔案的文章的第二部分。在本文中,您將學習如何讀取我們建立的文字檔案,我將教您如何將該 與我們建立的 一起使用,但是如果您想將其放入另乙個專案或原始檔中並分別進行編譯那也會起作用。現在開始 您應該已經在原始檔中包含此檔案 include include using n...