2014-03-05 19 views
0

open()fopen()函數之間有區別。一個是系統調用,另一個是庫函數。我試圖弄清楚這兩個函數的應用是什麼,但我發現沒有用。 你可以給一些場景使用open()fopen()應該使用?應用open()和fopen()

+0

「open」函數只是一些POSIX系統上的系統調用。在例如Windows就像'fopen'一樣是一個普通的庫函數。 –

回答

2

有時你需要一個文件描述符。 open()給你一個。有時你需要一個FILE*,在這種情況下使用fopen()。您可以隨時通過fileno()FILE*轉換爲文件描述符,而相反的轉換則不受支持。它主要取決於您打算使用文件句柄調用哪些下游函數。

+0

哪些是open()比fopen()更合適的情況。 – Amit

+1

如果您只想調用需要文件描述符的函數,並且不需要FILE *的函數。 –

+0

特別在linux中,我們使用open()來使用一些設備特定的文件。 – Amit

0

open()將返回文件描述符。我們覆蓋文件,而使用fopen()我們不能覆蓋文件。我們使用的文件描述符進行讀取和寫入使用像讀()寫()等,但在其他 功能fopen()函數將返回文件描述符,我們必須 fprintf中使用()寫入文件流。 sscanf()從流中讀取。

+0

我們可以使用其他函數,如lseek在文件的中間寫入。 –