Ler última palavra de uma linha em um arquivo .txt em C [RESOLVIDO]

1. Ler última palavra de uma linha em um arquivo .txt em C [RESOLVIDO]

Lucas
DcoderLA

(usa Debian)

Enviado em 12/01/2021 - 22:27h

Boa noite pessoal, tudo bem ?

Estou em dúvidas em como faria para ler a última palavra de uma linha de um arquivo .txt
Ex:
x y z
a b c

Como seria a função fscanf para eu poder ler e armazenar numa variável apenas o 'z' ? Pensei em usar um vetor de structs para armazenar a linha toda, mas acho que deva ter um método que não seja tão "gritante".

Desde já agradeço qualquer ajuda e qualquer dica.



  


2. MELHOR RESPOSTA

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 13/01/2021 - 09:11h

Itere até o final do arquivo armazenando a linha atual. Depois divida a linha (split) usando o espaço como separador.
https://www.educative.io/edpresso/splitting-a-string-using-strtok-in-c?aid=5082902844932096&utm_...

3. Re: Ler última palavra de uma linha em um arquivo .txt em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/01/2021 - 22:51h

A sugestão de usar strtok() é boa, mas eu, pessoalmente, não a usaria, pois pode ser que o objetivo do exercício seja justamente fazer manualmente aquilo que ela faz por dentro.

Eu faria de um dos seguintes modos:

1) Ler a linha inteira (fgets() ou getline()).
2) Colocar um ponteiro para o último caráter da linha.
3) Ir retrocedendo o ponteiro até encontrar o primeiro caráter que caracteriza um separador de palavras (ou até chegar novamente ao início da linha).
4) Avançar novamente o ponteiro uma posição. Esse será o início da última palavra.

1) Ler a linha inteira.
2) Ter um ponteiro para o início da linha e um segundo ponteiro também para o início da linha.
3) Andar para frente com o primeiro ponteiro. Se ele apontar para um separador de palavras, examina o caráter seguinte e, se este último não for também um separador, aponta o segundo ponteiro para esse mesmo caráter.
4) Repetir o passo 3 até chegar ao final da linha.
5) O segundo ponteiro vai apontar para o início da última palavra da linha.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts