fscanf fprintf c fopen

fprintf - Diferencia entre r+y w+en fopen()



fscanf c (5)

En fopen("myfile", "r+") ¿cuál es la diferencia entre el modo abierto "r+" y "w+" ? Leo esto:

"r" Abre un archivo de texto para leer.
"w" Abre un archivo de texto para escribir, truncar un archivo existente a una longitud cero o crear el archivo si no existe.

"r+" Abre un archivo de texto para la actualización (es decir, para leer y escribir).
"w+" Abre un archivo de texto para la actualización (lectura y escritura), primero truncando el archivo a una longitud cero si existe o creando el archivo si no existe.

Quiero decir que la diferencia es que si abro el archivo con "w+" , ¿el archivo se borrará primero?


Hay 2 diferencias, a diferencia de r+ , w+ :

  • crea el archivo si aún no existe
  • primero trunque, es decir, borrará sus contenidos

Pruebe estos códigos y comprenderá:

#include <stdio.h> int main() { FILE *fp; fp = fopen("test.txt", "w+"); fprintf(fp, "This is testing for fprintf.../n"); fputs("This is testing for fputs.../n", fp); fclose(fp); }

y luego esto

#include <stdio.h> int main() { FILE *fp; fp = fopen("test.txt", "w+"); fclose(fp); }

A continuación, abra el archivo test.txt y vea lo que sucede. Verá que todos los datos escritos por el primer programa han sido borrados.
Repita esto para r+ y vea el resultado. Espero que lo entiendas


Tanto r+ como w+ pueden leer y escribir en un archivo. Sin embargo, r+ no elimina el contenido del archivo y no crea un nuevo archivo si dicho archivo no existe, mientras que w+ elimina el contenido del archivo y lo crea si no existe.


r + El archivo existente se abre al principio tanto para leer como para escribir. w + Igual que w excepto para leer y escribir.


r = read mode only r+ = read/write mode w = write mode only w+ = read/write mode, if the file already exists override it (empty it)

Entonces sí, si el archivo ya existe, w + borrará el archivo y le dará un archivo vacío.