fopen() para un archivo existente en modo de escritura

En C, fopen() se usa para abrir un archivo en diferentes modos. Para abrir un archivo en modo de escritura, se especifica «w». Cuando se especifica el modo «w», crea un archivo vacío para las operaciones de salida. ¿Qué pasa si el archivo ya existe? Si ya existe un archivo con el mismo nombre, su contenido se descarta y el archivo se trata como un nuevo archivo vacío. Por ejemplo, en el siguiente programa, si «test.txt» ya existe, su contenido se elimina y se escribe «GeeksforGeeks». 

C++

#include <iostream>
#include <cstdlib>
 
int main()
{
    FILE *fp = fopen("test.txt", "w");
    if (fp == NULL)
    {
        puts("Couldn't open file");
        exit(0);
    }
    else
    {
        fputs("GeeksforGeeks", fp);
        puts("Done");
        fclose(fp);
    }
    return 0;
} 
 
// This code is contributed by sarajadhav12052009

C

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    FILE *fp = fopen("test.txt", "w");
    if (fp == NULL)
    {
        puts("Couldn't open file");
        exit(0);
    }
    else
    {
        fputs("GeeksforGeeks", fp);
        puts("Done");
        fclose(fp);
    }
    return 0;
}

El comportamiento anterior puede conducir a resultados inesperados. Si la intención del programador era crear un archivo nuevo y ya existe un archivo con el mismo nombre, se sobrescribe el contenido del archivo existente. El último estándar C C11 proporciona un nuevo modo «x», que es un modo exclusivo de creación y apertura. El modo «x» se puede usar con cualquier especificador «w», como «wx», «wbx». Cuando x se usa con w, fopen() devuelve NULL si el archivo ya existe o no se pudo abrir. El siguiente es un programa C11 modificado que no sobrescribe un archivo existente. 

C++

#include <iostream>
#include <cstdlib>
 
int main()
{
    FILE *fp = fopen("test.txt", "wx");
    if (fp == NULL)
    {
        puts("Couldn't open file or file already exists");
        exit(0);
    }
    else
    {
        fputs("GeeksforGeeks", fp);
        puts("Done");
        fclose(fp);
    }
   
    return 0;
} 
 
// This code is contributed by sarajadhav12052009

C

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    FILE *fp = fopen("test.txt", "wx");
    if (fp == NULL)
    {
        puts("Couldn't open file or file already exists");
        exit(0);
    }
    else
    {
        fputs("GeeksforGeeks", fp);
        puts("Done");
        fclose(fp);
    }
    return 0;
}

Referencias: no haga suposiciones sobre fopen() y la creación de archivos http://en.wikipedia.org/wiki/C11_(C_standard_revision) http://www.cplusplus.com/reference/cstdio/freopen/ Este artículo está compilado por Abhay Rati . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *