Ir ao conteúdo
  • Cadastre-se

Dúvida com Arquivo.


matheustotora

Posts recomendados

Pessoal, boa tarde.

Estou com a seguinte dúvida: preciso pegar uma determinada palavra numa linha lida do arquivo e jogar esta palavra em uma variavel.

Exemplo: TFAA OBJECT IDENTIFIER ::= { enterprises 33219 }

Preciso pegar a palavra TFAA e o numero 33219. Cada palavra será colocada em uma variável de uma struct.

Eu utilizei até agora o método strstr para identificar a palavra chave, que no caso da linha do exemplo seria "OBJECT IDENTIFIER ::=". Depois de ter encontrado a palavra chave, eu joguei numa variavel a linha toda. E a partir dai que não estou conseguindo resolver meu problema.

Caso não esteja claro minha dúvida, eu tento colocá-la de outra maneira.

Aguardo ajuda!

Link para o comentário
Compartilhar em outros sites

Tendo a string na mão você precisa interpretá-la char por char e isolar em uma string à parte apenas os números. Depois você usa a função

int atoi(const char*) para transformar em inteiro

float atof(const char*) para transformar em float

Att. Aron.

Então, eu tenho uma variável string que lê o arquivo linha por linha. Para ler o arquivo estou utilizando a função fgets. No caso de interpretar char por char que você disse, qual dica você me daria para realizar tal? Que função se encaixa neste caso?

Desde já agradeço sua disposição em me ajudar.

Link para o comentário
Compartilhar em outros sites

para avaliar byte por byte vá passando pela string através de um laço for e, a cada resultado, veja se é entre '0' ou '9'. Se for-> ativa o modo "ler número", lê o número inteiro e armazena em uma string separada até que apareça um char que não seja número (espaço ou letra).

Outra ideia seria separar a string em palavras e avaliar uma por uma (e dentro da palavra byte por byte ou usando strcmp(char*, char*) que diz se duas strings são iguais ou não)

strcmp("Olá", "Olá") retornará 0, ou seja não existe diferença.

Para separar por palavras existe também uma função (que não me recordo do nome) strxxx, que já faz isso pra você. Pesquise sobre manipulação de strings que você acha fácil o nome da função.

Link para o comentário
Compartilhar em outros sites

para avaliar byte por byte vá passando pela string através de um laço for e, a cada resultado, veja se é entre '0' ou '9'. Se for-> ativa o modo "ler número", lê o número inteiro e armazena em uma string separada até que apareça um char que não seja número (espaço ou letra).

Cara estou tentando aqui resolver por este método que me disse. Caso eu consiga resolver, posto aqui.

Obrigado pela força! :)

Link para o comentário
Compartilhar em outros sites

Tendo a string na mão você precisa interpretá-la char por char e isolar em uma string à parte apenas os números. Depois você usa a função

int atoi(const char*) para transformar em inteiro

float atof(const char*) para transformar em float

Att. Aron.

Eu ainda não consegui resolver meu problema. Vou adicionar aqui mais algumas informações para ficar mais claro minha duvida.

Eu criei uma struct com 2 campos: um recebe o nome (TFAA) e o outro os numeros (33219). A minha dificuldade está em obter os números para posteriormente jogar na variável da struct. Eu estou tentando isolar os números como disse barutaji, mas ainda não consegui.

A lógica que pensei para obter os números foi: ler a string com uma repetição até encontrar o caracter {. Em seguida, ignorar o espaço entre o caracter { e a string e ler a string até encontrar outro espaço. Feito isso, pegar o número até o espaço antes do caracter }. Mas não estou achando um jeito de criar uma lógica para isso, ou seja, tratar estes espaços com a string.

String: TFAA OBJECT IDENTIFIER ::= { enterprises 33219 }

Me ajudem na lógica?

Obrigado!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...