溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C庫文件操作函數

發(fā)布時間:2020-07-14 20:20:45 來源:網絡 閱讀:283 作者:zheng_feng 欄目:編程語言

標準庫中的函數,類型以及宏在下面的標準頭文件中定義:

<assert.h> <float.h> <math.c> <stdarg.h> <stdlib.h>

<ctype.h> <limits.h> <setjmp.h> <stddef.h> <string.h>

<errno.h> <locale> <signal.h> <stdio.h> <time.h>


<stdio.h>:

該頭文件中定義的輸入和輸出函數、類型以及宏的數目幾乎占整個標準庫的三分之一。

流:是與磁盤或其它外圍設備關聯的數據的源或目的地。

文本流:由文本行組成的序列,每一個行包含0個或多個字符,并以‘\n’結尾。

二進制流:由未經過處理的字節(jié)構成的序列。

程序開始執(zhí)行時,stdin、stdout和stderr這三個流已經處于打開狀態(tài)。

FILE* fopen(const char* filename, const char* mode)

此函數打開filename指定的文件,并返回一個與之相關聯的流,打開失敗返回NULL;


訪問模式(mode):

“r”:以讀方式打開文本文件。

“w”:以寫方式打開文件文本。

“a”:追加;打開或者新建一個文本文件,并向文件末尾追加內容。

“r+”:打開文本文件用于更新(讀和寫)。

“w+”:打開或者新建文本文件用于更新,并刪除原有內容。

“a+”:追加:打開或者新建文本文件用于更新,并向末尾追加內容。

后面三種方式可以對同一個文件操作,但在讀和寫的交叉過程中,必須調用fflush函數

或者文件定位函數。


FILE* freopen(cosnt char* filename, const char* mode,FILE* stream)

此函數指定模式打開文件,并將文件關聯到指定的流,返回stream;出錯返回NULL;一般用于改變與stdin、stdout和stderr相關的文件。


int fflush(FILE* stream)

對輸出流來說,fflush函數將已寫到緩存區(qū)但沒有寫入文件的所有數據寫入文件。失敗返回EOF否則返回0.fflush(NULL)將清洗所有的輸出流。


int fclose(FILE* stream)

將所有沒寫入的數據寫入stream,丟棄緩存區(qū)的所有未讀輸入數據,并釋放自動分配的緩存區(qū),最后關閉流;出錯返回EOF,否則返回0。


int remove(const char* filename)

刪除指定的文件,刪除失敗返回一個非0值。


int rename(const char* oldname, const char* newname)

修改文件的名稱,失敗返回非0值。


FILE* tmpfile(void)

該函數以“w+b”模式新建一個臨時文件,程序結束時,自動刪除;創(chuàng)建成功返回一個流,失敗返回NULL。


int setvbuf(FILE* stream, char* buf,int mode, size_t size)

該函數控制流的緩沖;在執(zhí)行讀、寫以及其他任何操作之前必須調用此函數。當模式的值為_IOFBF時,將進行完全緩沖;模式為IOLBF時,將對文件進行緩沖;當模式為_IONBF時表示不緩沖,表示不設置緩沖。如果buf的值不是NULL,則函數將buf指向的區(qū)域作為流的緩沖區(qū),否則將分配一個緩沖區(qū),size表示緩沖區(qū)的長度。函數操作失敗,返回一個非0值。


void setbuf(FILE* stream, char* buf)

如果buf為NULL,則關閉流的緩沖;否則setbuf函數等價于

(void)setvbuf(stream, buf,_IOFBF, BUFSIZ).


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI