Eventuali duplicati:
C fopen vs openfunzione di aprire e fopen
Qual è la differenza tra open() e fopen() in linguaggio C?
Eventuali duplicati:
C fopen vs openfunzione di aprire e fopen
Qual è la differenza tra open() e fopen() in linguaggio C?
Uno fa parte della libreria c standard (fopen
), quindi è possibile aspettarsi che sia presente in tutte le configurazioni del compilatore c ospitato. Questa funzione restituisce un FILE*
che può essere operato dalle funzioni in <stdio.h>
.
L'altro (open
) è una chiamata/funzione di sistema non specificata dallo standard c (tuttavia, credo sia parte dello standard POSIX) e pertanto garantita solo su piattaforme selezionate che sostengono di supportarlo. Ciò restituisce un int
che rappresenta un file, questo può essere operato utilizzando read
/write
e altre funzioni simili.
Vedi http://www.cplusplus.com/reference/clibrary/cstdio/fopen/ e http://rabbit.eng.miami.edu/info/functions/unixio.html per ulteriori approfondimenti! – stanigator
open()
è una chiamata di sistema standardizzata fornita da un sistema operativo conforme a POSIX (la maggior parte dei sistemi operativi POSIX ha anche la chiamata di sistema open()
). fopen()
è una funzione di libreria C fornita dall'implementazione C e/o dalla libreria di runtime.
fopen()
consente l'input/output bufferizzato e/o formattato, mentre open()
viene generalmente utilizzato per un IO più diretto. È possibile implementare la funzione fopen()
utilizzando la chiamata di sistema open()
.
Come altri hanno detto open() è una chiamata di sistema attraverso standard POSIX, principalmente sostenuta dalla famiglia di sistemi operativi UNIX. Restituisce "int" che indica che il descrittore di file è stato aperto.
Mentre d'altra parte fopen() è fornito dalla libreria C e restituisce un file * che punta al file che si apre.
Vedere [ C fopen vs open ] (http://stackoverflow.com/questions/1658476/c-fopen-vs-open). –