Namespaces
Variants

std:: fopen

From cppreference.net
< cpp ‎ | io ‎ | c
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)