¿Cómo reemplazar un carácter en un archivo de texto usando C?
Necesito leer un archivo de texto (E3-5.txt) y buscar el carácter c1 para reemplazarlo por c2. Este es mi código incompleto:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char c;
char c1 = 'm';
char c2 = 'a';
int i;
FILE* fp;
fp = fopen("C:\E3-5.txt", "r+");
if (fp == NULL)
{
printf("¡Archivo no encontrado!");
return 0;
}
for(c = getc(fp); c != EOF; c = getc(fp))
{
if(c == 'm')
{
i = ftell(fp);
printf("\nPosición %d", i);
}
}
return 0;
}
Tengo problemas para localizar la posición de c1 en el texto y cómo reescribirlo.
Edición:
Usé el código de respuesta, pero no cambió el texto. Este es el nuevo código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char c;
char c1 = 'm';
char c2 = 'a';
int i;
FILE* fp;
fp = fopen("C:\E3-5.txt", "rb+");
if (fp == NULL)
{
printf("¡Archivo no encontrado!");
return 0;
}
else
{
for(c = getc(fp); c != EOF; c = fgetc(fp))
{
if(c == c1)
{
fseek(fp, -1, SEEK_CUR);
fputc(c2, fp);
}
else
{
return 0;
}
}
}
return 0;
}
El programa devolvió 0 sin escribir nada en el texto.</string.h></stdlib.h></stdio.h></string.h></stdlib.h></stdio.h>
davy.ai
Puedes usar las funciones
fseek
yfputc
para reemplazar el carácterc1
porc2
. Aquí está el código actualizado:Este código abre el archivo en modo “rb+” que permite leer y escribir en el archivo. Luego, itera a través de cada carácter en el archivo usando
fgetc
. Si el carácter es el que quieres reemplazar (c1
), usafseek
para mover el apuntador del archivo hacia atrás un carácter y luego usafputc
para escribir el nuevo carácter en el archivo. Finalmente, el archivo se cierra usandofclose
.</string.h></stdlib.h></stdio.h>