open和fopen的區別

2021-09-02 09:17:08 字數 1481 閱讀 6828

open和fopen的區別:

1.緩衝檔案系統

緩衝檔案系統的特點是:在記憶體開闢乙個「緩衝區」,為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體「緩衝區」, 裝滿後再從記憶體「緩衝區」依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體「緩衝區」,待記憶體「緩衝區」裝滿後再寫入檔案。由此可以看出,記憶體 「緩衝區」的大小,影響著實際操作外存的次數,記憶體「緩衝區」越大,則操作外存的次數就少,執行速度就快、效率高。一般來說,檔案「緩衝區」的大小隨機器 而定。

fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等

2.非緩衝檔案系統

緩衝檔案系統是借助檔案結構體指標來對檔案進行管理,通過檔案指標來對檔案進行訪問,既可以讀寫字元、字串、格式化資料,也可以讀寫二進位制數 據。非緩衝檔案系統依賴於作業系統,通過作業系統的功能對檔案進行讀寫,是系統級的輸入輸出,它不設檔案結構體指標,只能讀寫二進位制檔案,但效率高、速度 快,由於ansi標準不再包括非緩衝檔案系統,因此建議大家最好不要選擇它。本書只作簡單介紹。open, close, read, write, getc, getchar, putc, putchar 等。

open 是系統呼叫 返回的是檔案控制代碼,檔案的控制代碼是檔案在檔案描述副表裡的索引,fopen是c的庫函式,返回的是乙個指向檔案結構的指標。

fopen是ansic標準中的c語言庫函式,在不同的系統中應該呼叫不同的核心api

linux中的系統函式是open,fopen是其封裝函式,個人觀點。僅供參考。

檔案描述符是linux下的乙個概念,linux下的一切裝置都是以檔案的形式操作.如網路套接字、硬體裝置等。當然包括操作檔案。

fopen是標準c函式。返回檔案流而不是linux下檔案控制代碼。

裝置檔案不可以當成流式檔案來用,只能用open

fopen是用來操縱正規檔案的,並且設有緩衝的,跟open還是有一些區別

一般用fopen開啟普通檔案,用open開啟裝置檔案

fopen是標準c裡的,而open是linux的系統呼叫.

他們的層次不同.

fopen可移植,open不能

我認為fopen和open最主要的區別是fopen在使用者態下就有了快取,在進行read和write的時候減少了使用者態和核心態的切換,而open則每次都需要進行核心態和使用者態的切換;表現為,如果順序訪問檔案,fopen系列的函式要比直接呼叫open系列快;如果隨機訪問檔案open要比fopen快。

來自論壇的經典回答:

前者屬於低階io,後者是高階io。

前者返回乙個檔案描述符(使用者程式區的),後者返回乙個檔案指標。

前者無緩衝,後者有緩衝。

前者與 read, write 等配合使用, 後者與 fread, fwrite等配合使用。

後者是在前者的基礎上擴充而來的,在大多數情況下,用後者。

open和fopen的區別

1.緩衝檔案系統 緩衝檔案系統的特點是 在記憶體開闢乙個 緩衝區 為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體 緩衝區 裝滿後再從記憶體 緩衝區 依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體 緩衝區 待記憶體 緩衝區 裝滿後再寫入檔案。由此可以看出,記憶...

open和fopen的區別

open和fopen的區別 1.緩衝檔案系統 緩衝檔案系統的特點是 在記憶體開闢乙個 緩衝區 為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體 緩衝區 裝滿後再從記憶體 緩衝區 依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體 緩衝區 待記憶體 緩衝區 裝滿後再...

open和fopen的區別

open和fopen的區別 1.緩衝檔案系統 緩衝檔案系統的特點是 在記憶體開闢乙個 緩衝區 為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體 緩衝區 裝滿後再從記憶體 緩衝區 依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體 緩衝區 待記憶體 緩衝區 裝滿後再...