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.