1.檔案指標
ansi檔案操作提供了乙個檔案指標file來進行對檔案的開啟讀寫和關閉及其他訪問;
它的結構體:
typedef
struct
file;
2.緩衝
緩衝目的是為了減少外部裝置的讀寫次數,同時使用緩衝能提高應用程式的讀寫效能
緩衝有三種:全緩衝、行緩衝、不帶緩衝。
全緩衝:填滿才會操作
行緩衝:遇到換行符就操作;
不帶緩衝:直接操作;
設定緩衝的函式:
void
setbuf
(file *fp,
char
*buf)
;int
setvbuf
(file *fp,
char
*buf,
int mode,size_t size)
;
setbuf()函式可以開啟或關閉乙個i/o流使用的緩衝。
setvbuf()函式依靠mode引數實現為i/o流設定指定型別的緩衝:
①_iofbf:全緩衝
②_iolbf:行緩衝
③_ionbf:不帶緩衝
3.開啟、關閉檔案
file *
fopen
(const
char
*path,
const
char
*mode)
;int
fclose
(file *stream)
;
mode模式:
r或rb:唯讀方式,b為二進位制
w或wb:只寫方式,檔案長度置0
a或ab:在檔案結尾新增
r+或r+b或rb+:可讀可寫方式
w+或w+b或wb+:只寫方式,檔案長度置0
a+或a+b或ab+:在檔案結尾讀寫
當開啟檔案成功時,fopen()函式會返回乙個file型別的檔案指標,開啟失敗會返回null。
關閉檔案時,關閉成功返回0,關閉失敗返回eof。
4.讀寫檔案
①乙個字元讀寫操作
讀操作
int
getc
(file *stream)
;int
fgetc
(file *stream)
;int
getchar
(void
);
寫操作
int
putc
(int c,file *stream)
;int
fputc
(int c,file *stream)
;int
putchar
(int c)
;
②一行檔案讀寫操作
讀一行操作
char
*fgets
(char
*s,int size,file *stream)
;char
*gets
(char
)
寫一行操作
int
fputs
(const
char
*s,file *stream)
;int
puts
(const
char
*s);
③成塊資料的檔案讀寫函式
size_t fread
(void
*ptr,size_t size,size_t nmemb,file *stream)
;size_t fwrite
(const
void
*ptr,size_t size,size_t nmemb,file *stream)
;
其中nmemb指的是資料塊數量,size指的是資料塊大小,函式返回值是讀寫成功後,返回讀寫資料塊的個數。
5.檔案流定位
int
fseek
(file *stream,
long offset,
int whence)
;long
ftell
(file *stream)
;void
rewind
(file *stream)
;
其中offset是指位置的偏移,whence有三個值seek_cur表示從當前檔案位置計算offset;seek_end表示從檔案尾開始計算offset;seek_set表示從檔案起始計算offset。ftell()函式返回指定檔案流當前讀寫指標的位置,錯的返回-1;rewind()函式把指定的檔案流讀寫指標設定到最開始的位置。
if you want to be sucessful,you need to be harder.
Linux系統呼叫和ANSI C檔案操作的區別
一 在linux下對檔案操作有兩種方式 linux系統呼叫和ansi c檔案操作。1 linux系統呼叫呼叫常用於i o檔案操作,系統呼叫常用的函式有open close read write lseek ulink等。2 ansi c檔案操作 ansi c檔案操作方法是所有作業系統通用的檔案操作方...
Linux 之 ANSI C庫流檔案操作函式
1 關閉當前執行緒開啟的所有流檔案物件,函式如果執行成功,將返回0,否則返回eof 1 並設定錯誤標識位errno全域性變數。include int fcloseall void 2 通過i o系統呼叫,將緩衝區內容重新整理到磁碟中,函式執行成功,返回0,否則返回eof 1 並設定錯誤標識位errn...
Linux下ANSI C檔案管理
ansi檔案庫封裝了標準的檔案操作函式庫,通過系統呼叫函式可以很方便的對檔案進行操作,並且加入了檔案緩衝機制,提供記錄方式的對寫檔案,具有很好的可移植性,提高了 的健壯性。其主要包括以下幾個方面 1.檔案指標 2.檔案和流之間的關係 3.文字和二進位制 4.檔案的基本操作 1.檔案是乙個可以永久儲存...