2012-05-14 27 views
6

Esto me da dolores de cabeza en la programación en C cuando trato de leer archivos.¿Cómo abrir un archivo para leer en C?

No entiendo la diferencia entre estos 2 métodos:

FILE *fd; 
fd=fopen(name,"r"); // "r" for reading from file, "w" for writing to file 
         //"a" to edit the file 

fd devuelve NULL si el archivo no puede ser abierto, ¿verdad?

El segundo método que utilizo es:

int fd; 
fd=open(name,O_RDONLY); 

fd sería -1 si se produce un error en abrir el archivo.

¿Alguien sería tan amable de explicarme esto? Gracias de antemano :)

Respuesta

10

El uso de fopen() le permite usar la biblioteca C stdio, que puede ser mucho más conveniente que trabajar directamente con los descriptores de archivos. Por ejemplo, no hay un built-in equivalente a fprintf (...) con descriptores de archivos.

A menos que necesite realizar E/S de bajo nivel, las funciones stdio sirven muy bien a la gran mayoría de las aplicaciones. Es más conveniente y, en los casos normales, igual de rápido cuando se usa correctamente.

+1

Así que debería usar el que me sienta más cómodo, ¿no? fopen() es entonces. – appoll

+2

Creo que sería una buena forma de hacerlo. Y sí, devuelve NULL por error. Si falla, puede verificar errno para averiguar por qué. –