En fopen("myfile", "r+") cual es la diferencia entre el "r+" y "w+" modo abierto? Leo esto:
"r" Abre un archivo de texto para leer. "w" Abra un archivo de texto para escribir, truncar un archivo existente a cero o crear el archivo si no existe.
"r+" Abra un archivo de texto para actualizar (es decir, tanto para leer como para escribir). "w+" Abra un archivo de texto para la actualización (lectura y escritura), primero truncando el archivo a cero si existe o creando el archivo si no existe.
Quiero decir, la diferencia es que si abro el archivo con "w+"el archivo se borrará primero?
las 2 diferencias están ahí: truncar y crear.
– usuario2404501
14/01/2014 a las 12:50
… será “borrado” primero, o creado si no existe (mientras que r+ daría error en este caso.
– ShinTakezou
14/01/2014 a las 12:50
Pedro
Ambas cosas r+ y w+ puede 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.
Estaba buscando una manera de no eliminar el contenido del archivo (como r+) pero también crear un nuevo archivo si no existe (como w+). yo descubrí open(x, 'a').close(); open(x, 'r+')
– colineador
23 de mayo de 2018 a las 2:04
trucos
La principal diferencia es w+ trunque el archivo a la longitud cero si existe o cree un nuevo archivo si no existe. Tiempo r+ ni elimina el contenido ni crea un nuevo archivo si no existe.
Prueba estos códigos y lo entenderás:
#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);
}
si vas a abrir test.txtverá que todos los datos escritos por el primer programa se han borrado.
Repita esto para r+ y ver el resultado.
Aquí está el resumen de los diferentes modos de archivo (1 => ture0 => false):
Esto no responde la pregunta.
–Cengiz Kandemir
24 de mayo de 2019 a las 9:20
Este diagrama será más rápido de leer la próxima vez. Tal vez alguien más lo encuentre útil también. Esto se explica claramente la diferencia entre.
el diagrama de flujo es lo mejor 😀
–Srinath Ganesh
19 de diciembre de 2020 a las 16:19
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+ lo borrará y le dará un archivo vacío.
sátvico
w+
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("test.txt", "w+"); //write and read mode
fprintf(fp, "This is testing for fprintf...\n");
rewind(fp); //rewind () function moves file pointer position to the beginning of the file.
char ch;
while((ch=getc(fp))!=EOF)
putchar(ch);
fclose(fp);
}
#include<stdio.h>
int main()
{
FILE *fp;
fp = fopen("test.txt", "r+"); //read and write mode
char ch;
while((ch=getc(fp))!=EOF)
putchar(ch);
rewind(fp); //rewind () function moves file pointer position to the beginning of the file.
fprintf(fp, "This is testing for fprintf again...\n");
fclose(fp);
return 0;
}
producción
This is testing for fprintf...
prueba.txt
This is testing for fprintf again...
r y w formar r+
prueba.txt
This is testing for fprintf...
#include<stdio.h>
int main()
{
FILE *fp;
fp = fopen("test.txt", "r");
char ch;
while((ch=getc(fp))!=EOF)
putchar(ch);
fclose(fp);
fp=fopen("test.txt","w");
fprintf(fp, "This is testing for fprintf again...\n");
fclose(fp);
return 0;
}
producción
This is testing for fprintf...
prueba.txt
This is testing for fprintf again...
un+
prueba.txt
This is testing for fprintf...
#include<stdio.h>
int main()
{
FILE *fp;
fp = fopen("test.txt", "a+"); //append and read mode
char ch;
while((ch=getc(fp))!=EOF)
putchar(ch);
rewind(fp); //rewind () function moves file pointer position to the beginning of the file.
fprintf(fp, "This is testing for fprintf again...\n");
fclose(fp);
return 0;
}
producción
This is testing for fprintf...
prueba.txt
This is testing for fprintf...
This is testing for fprintf again...
a y r formar un+
prueba.txt
This is testing for fprintf...
#include<stdio.h>
int main()
{
FILE *fp;
fp = fopen("test.txt", "a"); //append and read mode
char ch;
while((ch=getc(fp))!=EOF)
putchar(ch);
fclose(fp);
fp=fopen("test.txt","r");
fprintf(fp, "This is testing for fprintf again...\n");
fclose(fp);
return 0;
}
producción
This is testing for fprintf...
prueba.txt
This is testing for fprintf...
This is testing for fprintf again...
La mejor respuesta en mi humilde opinión. Debe ser el aceptado.
– Sopalajo de Arriérez
3 de enero de 2020 a las 22:39
¿Qué sucede con el archivo de texto abierto en modo r+ si la cadena impresa en el ejemplo anterior es más corta que la que está en el test.text inicial? por ejemplo fprintf (fp, “Hola”); ¿Se convierte simplemente en Hola o Hola está probando fprintf nuevamente …
– Janjan
28 de abril de 2020 a las 20:03
@Janjan Imprime Hola
– Sátvico
29 de abril de 2020 a las 5:21
perreal
Hay 2 diferencias, a diferencia de r+, w+ voluntad:
crear el archivo si aún no existe
primero lo truncará, es decir, borrará su contenido
La mejor respuesta en mi humilde opinión. Debe ser el aceptado.
– Sopalajo de Arriérez
3 de enero de 2020 a las 22:39
¿Qué sucede con el archivo de texto abierto en modo r+ si la cadena impresa en el ejemplo anterior es más corta que la que está en el test.text inicial? por ejemplo fprintf (fp, “Hola”); ¿Se convierte simplemente en Hola o Hola está probando fprintf nuevamente …
– Janjan
28 de abril de 2020 a las 20:03
@Janjan Imprime Hola
– Sátvico
29 de abril de 2020 a las 5:21
Bansal Ashwani
r+ El archivo existente se abre desde el principio tanto para lectura como para escritura. w+ Igual que w excepto para lectura y escritura.
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
las 2 diferencias están ahí: truncar y crear.
– usuario2404501
14/01/2014 a las 12:50
… será “borrado” primero, o creado si no existe (mientras que
r+
daría error en este caso.– ShinTakezou
14/01/2014 a las 12:50