常用標準I O庫函式總結

2021-06-28 22:18:00 字數 3871 閱讀 5384

1:fopen()

fopen()函式主要用於對檔案和終端的輸入輸出。但是如果要對裝置的行為進行更為明確的行為控制,那最好使用底層系統呼叫,因為這樣可以避免庫函式帶來的一些非預期的潛在***。

函式原型:

#include

file *fopen(const char *filename, const char *mode);

filaname:指定的檔名,fopen會把它與乙個檔案流關聯起來。

mode:指定檔案的開啟方式

返回值:成功時返回乙個file*指標,失敗返回null值,null定義在stdio.h中。

mode引數如下所示:

"r"/"rb":唯讀方式開啟

"w"/"wb":只寫方式開啟,把檔案長度截為0(你可把它想象為》)

"a"/"ab":只寫方式開啟,新內容追加到檔案尾(你可以想象成》)

"r+"/"r+b"/"rb+":以修改方式開啟(讀寫)

"w+"/"w+b"/"wb+":以修改方式開啟,同時把檔案內容截為0

"a+"/"a+b"/"ab+":以修改方式開啟,新內容追加到檔案結尾

linux會把所有檔案都看成是二進位制檔案,所以那個"b"表示檔案是二進位制。

2:fread()函式

fread()函式的主要作用是從乙個檔案流裡讀取資料,資料從stream讀到由ptr指定的資料緩衝區裡面。

函式原型:

#include

size_t fread(void *ptr, size_t size, size_t nitems, file *stream);

ptr:資料讀到ptr指定的緩衝區裡面。

size:每個資料記錄的長度(類似與char,int,long,float之類,指代每次讀取塊的大小)

nitems:傳輸的記錄個數

stream:指定要讀取的資料緩衝區

返回值:讀到緩衝區的記錄個數(非位元組),如果讀到檔案尾,其返回值可能小於nitems,甚至可以是0(讀取檔案為空)。

3:fwrite()函式

fwrite()函式從stream獲取資料記錄寫到ptr中,返回值是成功寫入的記錄個數。

函式原型:

#include

size_t fwrite(const void *ptr, size_t size, size_t items, file *stream);

它的介面和fread很像,參考fread。

4:fclose()函式

fclose()函式關閉指定的檔案劉stream,使所有未寫出的內容全部寫出。

函式原型:

#include

int fclose(file *stream);

stream:指定要關閉的檔案流stream

返回值:如果成功返回0,失敗返回eof,同時會向全域性變數errorn寫入錯誤資訊碼。

5:fflush()函式

fflush()函式的主要作用是把檔案流的所有未寫出的內容立刻寫出。

函式原型:

#include

int fflush(file *stream);

介面同fclose.

6:fseek()函式

fseek()函式主要作用是在檔案流裡面為下一次讀寫指定位置。

函式原型:

#include

int fseek(file *stream, long int offset, int whence);

stream:指定操作的檔案流

offset:指定位置

whence:指定偏移方式,具體形式類似系統呼叫lseek。

返回值:成功返回0,失敗返回-1,同時設定errno指出錯誤。

7:fgetc,getc,getchar函式

fgetc()從檔案流取出下乙個位元組並把它作為乙個字元返回,如果到達檔案結尾或者出現錯誤的時候返回eof。其中getchar()從標準輸入讀取資料。

函式原型:

#include

int fgetc(file *stream);

int getc(file *stream);

int getchar();

8:fputc,putc,putchar函式

fputc()函式把乙個字元寫道乙個輸出檔案流中。如果成功返回寫入的值,失敗則返回eof。其中puchar()函式將單個字元寫道標準輸出。

#include

int fputc(int c, file *stream);

int putc(int c, file *stream);

int putchar();

9:fgets()和gets()函式

fgets()函式從輸入檔案流stream讀取乙個字串,並把讀到的字元寫到ptr指向的緩衝區,當遇到如下情況停止:遇到換行符,已經傳輸n-1個字元,或者到達檔案尾。它會把遇到的換行符也傳遞到接收字串裡去,再加上乙個表示結尾的空位元組\0。

gets()函式從標準輸入讀取資料並丟棄遇到的換行符,它在接受字串的尾部加上null。

函式原型:

#include

char *fgets(char *ptr, int n, file *stream);

char *gets(char *ptr);

10:printf,fprintf,sprintf函式

printf系列函式能夠對各種不同型別的引數進行格式化編排和輸出。

printf函式把自己的輸出送到標準輸出;

fprintf函式把自己的輸出送到乙個指定的檔案流;

sprintf函式把自己的輸出和乙個結尾空字元寫到s指向的緩衝區。

函式原型:

#include

int printf(const char *format, ...);

int sprintf(char *s, const char *format, ...);

int fprintf(file *stream, const char *format, ...);

format:指定輸出的格式;

s:字串緩衝區

stream:指定的檔案流

11:scanf,fscanf和sscanf函式

scanf系列函式從乙個檔案流讀取資料並寫到指定位址的變數。

scanf函式將讀入的值儲存在對應的變數裡;

函式原型:

#include

int scanf(const char *format, ...);

int fscanf(file *stream, const char *format, ...);

int ssacnf(const char *s, const char *format, ...);

12:檔案流錯誤

通過檢查檔案流的狀態來確定是否發生錯誤;

ferror函式測試乙個檔案流的錯誤標識,如果被設定返回乙個非0值,否則返回0.

feof函式測試乙個檔案流的檔案尾標識,如果被設定就返回乙個非0值,否則返回0.

clearerr函式清楚有stream指定的檔案流的檔案尾標識和錯誤標識。

函式原型:

#include

int ferror(file *stream);

int feof(file *stream);

void clearerr(file *stream);

13:檔案流和檔案描述符

每個檔案流都有乙個底層描述符相關聯。

fileno函式可以確定檔案流使用那個底層描述符;

fdopen函式在乙個已經開啟的檔案描述符上建立乙個新的檔案流。

函式原型:

#include

int fileno(file *stream);

file *fdopen(int fildes, const char *mode);

STL標準庫函式總結

平時stl自己用的很少,很多庫函式都不是很熟悉,趁著最近有空,將stl的知識學習一下。主要學習一下,pair,vector,set,vector,stack,queue,map,string.位於標頭檔案 iostream 中用來表示乙個二元組或元素對 1.1 使用pair 定義乙個pair物件表示...

系統I O函式與C標準庫函式

先上圖 read write函式常常被稱為 unbuffered i o。指的是無使用者輸入級緩衝區,但不保證不使用核心緩衝區。使用者程式在讀寫檔案時既可以呼叫c標準i o庫函式,也可以直接呼叫底層的系統i o函式,有什麼區別呢?c標準庫的i o緩衝區有三種型別 全緩衝 行緩衝和無緩衝。如果緩衝區寫...

檔案I O之C標準庫函式和系統庫函式差別

1.首先c標準庫函式是工作在系統庫函式之上的。c標準庫函式在讀寫檔案時候都有乙個檔案流指標。file fp null fp fopen f path,r fp檔案流指標,其指向結構體例如以下圖所看到的。檔案描寫敘述符指向磁碟檔案。在進行檔案讀寫操作時候是先讀寫到緩衝區。然後再呼叫系統應用層api w...