Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

376
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda