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

Como ler determinada parte de um .txt? (C)


Murilo Altheman

Pergunta

Olá galera,

Preciso de uma ajuda!

Estou desenvolvendo um programa em C que contém um struct[j] que precisa ser armazenado em um arquivo .txt .

A princípio (caso alguém tenha alguma idéia melhor me avise) pensei em guardar da seguinte forma:

0 0 m joao maria

0 1 i margarida da silva

0 2 m joao de barros

1 0 m gilmar costa

Para escrever em .txt não há problema! Mas e para ler?

Se eu precisar justamente do nome da pessoa da última linha, como devo proceder para chegar até ela?

Gostaria de inserir os dados 1 0 e somente armazenar o que há depois dela: m gilmar costa .

Já pensei em usar fscanf mas preciso selecionar a estrutura correta a ser lida desde o começo. Não é viável para uma tabela com umas 1000 pessoas, por exemplo.

Já tentei usar o fgets mas preciso colocar um for loop para ler linha a linha, sem contar que preciso determinar o numero de caracteres a serem lidos, o que dificulta justamente porque haverão números inicialmente 1, 2, 3 e depois 1000, 1001 (tamanhos diferentes).

Alguma sugestão?

Obrigado!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Já passei por um problema parecido

Eu fiz um programa que a partir de uma esturtura armazenava os dados em um TXT

e funcionava como um banco de dados....

Existe uma função no c que localiza a posição de do "dado no texto" depois de localizar você pode adita-lo.

Segue um exemplo:

case 8 : garotas = fopen("garotas.txt", "r+") // O arquivo tem de estar em modo de edição "r+"

fscanf(garotas, "%s", &banco.status); // Escaneia o arquivo e armazena o dado em banco.status.
                                
fseek (garotas, 0, SEEK_CUR); // percorre o arquivo do 0 até a posição atual.

tamfile=ftell (garotas); // armazena essa posição na variavel tamfile.



//DEPOIS


fseek ( garotas , tamfile-1 , SEEK_SET ); // Agora ele seta o cursor na posição tamfile -1 que é exatamente onta ta o status que quero alterar.

fputs ( "A" , garotas ); // altero o status que antes de 'X' para 'A'

Além disso a tem de ser declarado a várivavel:

fpos_t position;

essas funções fazem parte da <stdio.h>

Caso tenha mais dúvidas procure referencias sobre essas funções acima.

Espero ter ajudado.

Paulo Jardim

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...