Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

373
Vistas
¿Cómo leer y sobrescribir un archivo de texto en C?

Tengo un archivo de texto text.txt que lee (para simplificar)

 this is line one this is line two this is line three

Nuevamente, por motivos de simplicidad, solo estoy tratando de establecer el primer carácter de cada línea en 'x', por lo que mi resultado deseado sería

 xhis is line one xhis is line two xhis is line three

Así que abro el archivo text.txt e intento sobrescribir cada línea con el resultado deseado en el mismo archivo de texto. En el bucle while, configuro el primer carácter de cada línea en 'x'. También puse la variable "línea" igual a uno, porque si está en la primera línea, quiero rebobinar hasta el principio del archivo para sobrescribir al principio en lugar de al final del archivo. Luego, la línea se incrementa, por lo que omitirá el rebobinado para la próxima iteración, y debería continuar sobrescribiendo las líneas 2 y 3. Funciona perfectamente para la primera línea.

¿Alguien tiene alguna solución? Por cierto, he investigado esto extensamente tanto en stackoverflow como en otros sitios, y no tuve suerte. Aquí está mi código y mi salida también está a continuación:

 #include <stdio.h> #include <stdlib.h> #define MAX 500 int main() { char *buffer = malloc(sizeof(char) * MAX); FILE *fp = fopen("text.txt", "r+"); int line = 1; while (fgets(buffer, 500, fp) != NULL) { buffer[0] = 'x'; if (line == 1) { rewind(fp); fprintf(fp, "%s", buffer); } else { fprintf(fp, "%s", buffer); } line++; } free(buffer); fclose(fp); }

Producción:

 xhis is line one this is line two xhis is line two e x
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

long pos = ftell(fp);//Save the current position while (fgets(buffer, 500, fp) != NULL) { buffer[0] = 'x'; fseek(fp, pos, SEEK_SET);//move to beginning of line fprintf(fp, "%s", buffer); fflush(fp); pos = ftell(fp);//Save the current position }
over 4 years ago · Santiago Trujillo Denunciar

0

Siempre sugiero usar otro archivo para hacer este tipo de soluciones.

  1. leer la linea
  2. Coloque x en un nuevo archivo en una línea y copie el resto de la línea.
  3. Haz esto hasta que obtengas EOF
  4. eliminar el archivo antiguo
  5. cambiar el nombre de este nuevo archivo
over 4 years ago · Santiago Trujillo Denunciar

0

probar esto

 #include<stdio.h> #include<stdio.h> #include<string.h> int main() { char buffer[500],read[50][50]; FILE *fp=fopen("text.txt","r+"); int line =1; while(fgets(buffer,500,fp)!=NULL){ buffer[0]='x'; printf("\n%d ",line); puts(buffer); strcat(read[line-1],(const char*)buffer); line++; } fclose(fp); FILE *fp1=fopen("text.txt","w"); rewind(fp1); fprintf(fp1,"%s",read); return 0; }

Resolví esto en Windows

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda