Ir ao conteúdo
  • Cadastre-se
Maicon Lucas Mares

C Excluir linhas específicas de um arquivo em C

Recommended Posts

Olá, estou aprendendo sobre arquivo em C e gostaria de saber como faço para apagar partes específicas do meu arquivo txt sem apagar tudo. Pesquisei e a maioria das pessoas dizem que eu devo copiar tudo do arquivo original menos as linhas que não quero e jogar em um arquivo novo com o nome antigo e excluir o antigo, mas como faço isto? (expliquem de uma forma simples por favor).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existem muitas formas de abordar esse problema, tudo depende do contexto. Se por exemplo seu arquivo é pequeno e não contem um grande custo no que a processamento se refere, então é melhor você carregar ele na memória completo e editar, por outro lado se são milhares de registros a tratar então seria melhor "zerar" os dados dessa linha para marcar ela como "disponível" para um possível futuro registro, ao inserir um novo dado, esse deveria ocupar esse espaço que foi desocupado.

Pense em um arquivo como se fosse um estacionamento, lá você pode retirar carros, mas não quer dizer que eliminar um carro você vai eliminar a vaga, se retirar um carro a vaga permanece la para um novo carro ocupar. Deu para entender? Então seguindo esse raciocínio você pode seguir ao menos 2 ou mais estratégias; eliminar o dado e habilitar o espaço para que ocupe um novo dado ou "tirar todos os carros do estacionamento e enviar a outro estacionamento excetuando o veiculo desejado" que é a estratégia que outros programadores lhe propõem. A segunda é mais fácil pois você carrega tudo na memória trata os dados e envia os dados para um novo arquivo.

Para lhe dar exemplos fica difícil pois seria possível lhe passar um montão de código e talvez você não entenda, o melhor seria você buscar um bom tutorial sobre arquivos em internet.

Se optar por carregar tudo na memória você pode ler uma linha do arquivo, comparar com o dado que você deseja buscar e se não bater você envia essa linha para um vetor, caso coincida a busca você salta para a proxima linha, ou seja, não faz nada. O esquema seria mais ou menos esse:

pedir nome // scanf

repetir(até o fim do arquivo)//while
-ler uma linha //fscanf
-não coincide com nome?//if
   -enviar para vetor.
coincide?//else
   -não fazer nada.
fim repetir//fim do while


 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
14 horas atrás, Maicon Lucas Mares disse:

Olá, estou aprendendo sobre arquivo em C e gostaria de saber como faço para apagar partes específicas do meu arquivo txt sem apagar tudo. Pesquisei e a maioria das pessoas dizem que eu devo copiar tudo do arquivo original menos as linhas que não quero e jogar em um arquivo novo com o nome antigo e excluir o antigo, mas como faço isto? (expliquem de uma forma simples por favor).

Bom, voce pode copiar o conteudo do seu arquivo, gerar um arquivo novo e escrever nele tudo o que tinha antes, menos o que voce quer excluir.

 

mas para dizermos o que realmente pode ser feito voce deve nos dizer exatamente o que quer...

 

exemplo: 

 

li um arquivo que tem as seguinte linhas:

maca

banana

melancia

maracuja

 

ao copiar esse arquivo para uma matriz e por exemplo eu quero excluir a palavra melancia, então voce deve criar uma estrutura de repetidão e quando chegar na iteração que deseja você pula.

 

no exemplo acima melancia está na posicao 2 e usarei j como iteracao..

while(....)

{

if (j==2)

continue;

//aqui voce cola a funcao de escrever no arquivo...

}

Resumindo:

Copia tudo para uma matriz;

criar novo arquivo zerado "w"..

com estrutura de repeticao escreve no arquivo tudo novamente, exceto a linha que nao deseja, e para isso usa um continue; dentro do if se a iteracao for igual a linha que nao deseja.

 

Se nao pegou a ideia, posso explicar melhor com voce nos dizendo o que realmente deseja.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×