標準i/o-流
標準io-流自動重新整理緩衝區
標準io-定位流
標準io-判斷流是否出錯和結束
標準io-格式化輸出
全緩衝
當流的緩衝區無資料或無空間時才執行實際的io操作(開啟檔案時,預設的緩衝方式)
行緩衝
當在輸入和輸出中遇到換行符』\n』時,進行io操作(和終端有關時,預設的緩衝方式;標準輸入輸出流預設使用該方式)
無緩衝
資料直接寫入檔案,流不進行緩衝,錯誤流使用該方式
file *
fopen
(const
char
*path,
const
char
*mode)
流的開啟方式:(mode)
mode
說明r/rb
以唯讀方式開啟檔案,檔案必須存在
r+/r+b
以讀寫方式開啟檔案,檔案必須存在
w/wb
以只寫方式開啟檔案,若檔案存在則檔案長度清0,。若不存在則新建
w+/w+b
以讀寫方式開啟檔案,其它同w
a/ab
以只寫方式開啟檔案,若檔案不存在則建立;向檔案寫入的資料被追加到檔案末尾
a+/a+b
以讀寫方式開啟檔案。其它同a
注:b指以二進位制方式操作,否則以文字方式
#include
intmain()
...return0;
}
extern
int errno//存放錯誤號的變數
void
perror
(const
char
*s);
//先列印字串,再列印錯誤資訊
perror
("fopen");
//fopen:no such file or directory
char
*strerror
(int errno);//
printf
("fopen:%s\n"
,strerror
(errno));
fopen:no such file or directory
int
fclose
(file *stream)
;//關閉流時自動重新整理緩衝中的資料並釋放緩衝區
//當流不使用時,應當及時關閉
讀寫乙個字元:fgetc()/fputc()
讀寫一行:fgets()/fputs()
讀寫若干個物件:fread()/fwrite()
#include
intfgetc
(file *p)
;//和getc()等價
intgetc
(file *p)
;int
getchar
(void);
//等價於fgetc(stdin) 從鍵盤輸入乙個字元
#include
intfputc
(file *p)
;//和putc()等價
intputc
(file *p)
;//失敗時返回eof
intputchar
(int c)
;//等價於putc(stdout) 向標準輸出流輸出乙個字元
#include
char
*gets
(char
*s);
//不建議使用,容易造成緩衝區溢位
char
*fgets
(char
*s,int size,file *p)
;//成功時返回s,到檔案末尾或出錯時返回null;遇到'\n'或已輸入size-1個字元時返回,總是以'\0'結尾,表示這是字串
#include
intputs
(const
char
*s);
intfputs
(const
char
*s,file *p)
;//puts將緩衝區s中的字串輸出到stdout,並追加'\n'
//fputs將緩衝區s中的字串輸出到stream
size_t fread(void prt,size_t stze, size_t n,file fp);//返回實際讀取資料個數
size_t fwrite(const voidptr,size_t size,size_t n,filefp);//返回實際寫資料個數
int s[10]
;if(fread
(s,sizeof
(int),
10,fp)
<0)
什麼時候重新整理緩衝區?
緩衝區滿,或流的緩衝區**現』\n』
關閉流的時候,如果緩衝區還有資料,則會把資料重新整理到實際檔案中
int fflush(file *fp);//linux中只能重新整理輸出緩衝區,輸入緩衝區只能通過呼叫一些函式讀取實現清空
long
ftell
(file *fp)
;//獲取當前讀寫位置的值
long
fseek
(file *fp,
long offset,
int whence)
;//seek_set(起始),seek_cur/seek_end
void
rewind
(file*fp)
;//直接定位到流的起始位置
int ferror (file *fp);//返回1表示出錯
int feof(file *fp);//返回1表示檔案已到末尾
int printf(const char fmt,…);
int fprintf(filefp,const char *fmt,…)
int sprintf(char *s,const char *fmt,…)
l4-d1/d2
Linux下檔案I O系統呼叫
庫是可重用的模組 處於使用者態 系統呼叫是os提供的服務 處於核心態 不能直接呼叫 而要使用類似int 0x80的軟中斷陷入核心 所以庫函式中有很大部分是對系統呼叫的封裝。從巨集觀上說,系統呼叫時核心層,c標準庫在應用層。檔案描述符是linux核心為了高效管理已被開啟的檔案而建立的索引,其值為乙個非...
Linux檔案 標準IO概述
標準i o指的是ansi c中定義的用於i o操作的一系列函式。只要作業系統安裝了c庫,就可以呼叫標準i o。換句話說,若程式使用標準i o函式,那麼源 無需進行任何修改就可以在其他作業系統上編譯,具有更好的可移植性。除此之外,由於標準i o封裝了緩衝區,使得在讀寫檔案的時候減少了系統呼叫的次數,提...
C標準庫I O和Linux檔案I O
c標準 i o庫函式在標頭檔案 stdio.h 中宣告,而 read write 等函式 檔案i o 在標頭檔案 unistd.h 中宣告 linux的訪問許可權分為 讀 寫 執行三種,可以使用ls l進行檢視 niesh niesh desktop ls lh 總用量 8.0k rw rw r 1...