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.