Ir para conteúdo
Fórum Script Brasil
  • 0

Editando arquivo .txt


Meloo1

Pergunta

Pessoal, gostaria de saber se alguém poderia me ajuda com edição de arquivo .txt em linguagem C. 

Alguém teria alguma ideia de como modificar uma linha, dentre várias, de um arquivo .txt? estou fazendo um trabalho de sistema de biblioteca, e uma das funções necessárias é fazer com que um arquivo seja alterado e deletado. Uma linha é composta sempre dessa forma: "IDnoSistema;Autor;Titulo;Ano;Edicao...". Ou seja, cada linha sempre separada por ";". Para deletar só preciso colocar um D no campo "IDnoSistema", na linha. Já para editar, seria a linha toda ou parte dela. Porém minha dúvida é como substituir uma linha em específico por uma nova criada.

Alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Em 27/08/2021 em 15:12, Meloo1 disse:

Pessoal, gostaria de saber se alguém poderia me ajuda com edição de arquivo .txt em linguagem C. 

sim eu posso.

Em 27/08/2021 em 15:12, Meloo1 disse:

Alguém teria alguma ideia de como modificar uma linha, dentre várias, de um arquivo .txt?

sim eu tenho.

Em 27/08/2021 em 15:12, Meloo1 disse:

estou fazendo um trabalho de sistema de biblioteca, e uma das funções necessárias é fazer com que um arquivo seja alterado e deletado. Uma linha é composta sempre dessa forma: "IDnoSistema;Autor;Titulo;Ano;Edicao...".

Seria melhor você postar o que já tem feito.

Em 27/08/2021 em 15:12, Meloo1 disse:

Ou seja, cada linha sempre separada por ";".

Isso se chama "Comma-separated values", ou o que vem a ser o mesmo arquivo CSV.
https://pt.wikipedia.org/wiki/Comma-separated_values

Em 27/08/2021 em 15:12, Meloo1 disse:

Para deletar só preciso colocar um D no campo "IDnoSistema", na linha.

Exato. você não pode "deletar" uma linha, ela sempre vai permanecer lá. Inserindo uma D você esta marcando essa linha como "deletada" é dizer que em caso de IDnoSistema for igual a "D" você não deveria mostrar essa estrutura. Para retirar realmente essa linha você deveria passar a limpo todo o arquivo omitindo as linhas marcadas como "D".
 

 

Em 27/08/2021 em 15:12, Meloo1 disse:

Já para editar, seria a linha toda ou parte dela. Porém minha dúvida é como substituir uma linha em específico por uma nova criada.

Infelizmente temos que ler linha a linha e guardar esses dados em uma struct por exemplo para logo ir comparando com o que estamos buscando e posteriormente edita-la. O problema é que uma vez que fazemos a leitura "passamos do ponto" onde deveríamos começar a escrever. Para esse problema de passar do ponto podemos usar ftell que nos indica a posição atual na qual nos encontramos no arquivo. Se chamamos ftell antes de ler uma linha podemos guardar essa posição em uma variável e posteriormente chamar fsetpos ou fseek para voltar a esse ponto e escrever neste espaço.

Conselho tome cuidado para n sobrescrever dados. Se você inserir uma string maior do que a contida anteriormente você pode terminar sobrescrevendo alguns  dados.

Tente fazer o exercício e se tiver problema pergunte aqui novamente.

sorte

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...