std:: fopen
|
Definido en el encabezado
<cstdio>
|
||
|
std::
FILE
*
fopen
(
const
char
*
filename,
const
char
*
mode
)
;
|
||
Abre un archivo indicado por filename y retorna un flujo de archivo asociado con ese archivo. mode se utiliza para determinar el modo de acceso al archivo.
Contenidos |
Parámetros
| filename | - | nombre de archivo para asociar al flujo de archivo |
| mode | - | cadena de caracteres terminada en nulo que determina el modo de acceso al archivo |
Banderas de acceso a archivos
|
Cadena de modo de acceso
a archivo |
Significado | Explicación |
Acción si el archivo
ya existe |
Acción si el archivo
no existe |
|---|---|---|---|---|
| "r" | lectura | Abrir un archivo para lectura | leer desde el inicio | retornar NULL y establecer error |
| "w" | escritura | Crear un archivo para escritura | destruir contenido | crear nuevo |
| "a" | añadir | Añadir a un archivo | escribir al final | crear nuevo |
| "r+" | lectura extendida | Abrir un archivo para lectura/escritura | leer desde el inicio | retornar NULL y establecer error |
| "w+" | escritura extendida | Crear un archivo para lectura/escritura | destruir contenido | crear nuevo |
| "a+" | añadir extendido | Abrir un archivo para lectura/escritura | escribir al final | crear nuevo |
|
La bandera de modo de acceso a archivo
"b"
puede especificarse opcionalmente para abrir un archivo
en modo binario
. Esta bandera no tiene efecto en sistemas POSIX, pero en Windows, por ejemplo, desactiva el manejo especial de
'
\n
'
y
'
\x1A
'
.
En los modos de acceso de añadir, los datos se escriben al final del archivo independientemente de la posición actual del indicador de posición del archivo. |
||||
| La bandera de modo de acceso a archivo "x" puede añadirse opcionalmente a los especificadores "w" o "w+" . Esta bandera fuerza a la función a fallar si el archivo existe, en lugar de sobrescribirlo. (C++17) | ||||
| El comportamiento es indefinido si el modo no es una de las cadenas listadas arriba. Algunas implementaciones definen modos adicionales soportados (ej. Windows ). | ||||
Valor de retorno
Si tiene éxito, retorna un puntero al objeto que controla el flujo de archivo abierto, con ambos bits eof y error despejados. El flujo está completamente almacenado en búfer a menos que filename haga referencia a un dispositivo interactivo.
En caso de error, devuelve un puntero nulo. POSIX requiere que errno sea establecido en este caso.
Notas
El formato de filename está definido por la implementación, y no necesariamente se refiere a un archivo (por ejemplo, puede ser la consola u otro dispositivo accesible a través de la API del sistema de archivos). En plataformas que los admiten, filename puede incluir ruta absoluta o relativa del sistema de archivos.
Para nomenclatura portátil de directorios y archivos, consulte C++ filesystem library o boost.filesystem .
Ejemplo
#include <cstdio> #include <cstdlib> int main() { int is_ok = EXIT_FAILURE; FILE* fp = std::fopen("/tmp/test.txt", "w+"); if (!fp) { std::perror("File opening failed"); return is_ok; } int c; // Nota: int, no char, necesario para manejar EOF while ((c = std::fgetc(fp)) != EOF) // Bucle estándar de lectura de archivos E/S de C std::putchar(c); if (std::ferror()) std::puts("Error de E/S al leer"); else if (std::feof(fp)) { std::puts("Fin de archivo alcanzado exitosamente"); is_ok = EXIT_SUCCESS; } std::fclose(fp); return is_ok; }
Salida:
Fin de archivo alcanzado exitosamente
Véase también
|
cierra un archivo
(función) |
|
|
sincroniza un flujo de salida con el archivo real
(función) |
|
|
abre un flujo existente con un nombre diferente
(función) |
|
|
Documentación C
para
fopen
|
|