Ir ao conteúdo

Posts recomendados

Postado

@BMap33    existem varias formas ,  e  a que  sei ,  que funciona e eh bem trabalhosa e feita na unha mesmo ,  seria assim   voce le o arquivo linha por linha usando o comando fgets colocando em uma variavel do tipo string e depois usa um loop para percorrer e comparar todos os caracterex da string ate encontrar o sinal de igual ,  ai vai pegando os caracteres e colocando em outra string e converte essa string em valor decimal usando a funcao  atoi ,  mas se algum caractere nao for um digito decimal de zero ate nove els nao consegue converter e ai o valor sera essa string mesmo , entao faca um codigo do jeito que voce puder e poste aqui para vermos como esta e em que podemos ajudar      .

Postado

 

20 horas atrás, BMap33 disse:

K1_CONSTANT_BAND_10 = 774.8853


Veja pelo simples: você espera ler algo de um arquivo, algo da forma "campo = valor". No fundo 3 strings.

  • string 1 = " K1_CONSTANT_BAND_10"
  • string 2 é o próprio "="
  • string 3 deve ser o valor que precisa já que se fosse também constante não precisaria de um programa afinal.

Você pode simplesmente ler o arquivo letra por letra com fgetc() e ir comparando até achar as tais 3 strings na sequência. Nada de especial

 

Mas C tem a família de funções scanf() com o protótipo
 

int scanf ( const char * format, ... );

 

E esse simples programa por exemplo
 

#define _CRT_SECURE_NO_WARNINGS

#include "stdio.h"

void	fase1(char*);

int main()
{
	char* arquivo = "entrada.txt";
	fase1(arquivo);
	return 0;
}	// main()

void	fase1(char* arquivo)
{
	const char* mascara = "%s";
	char	    codigo[80];
	int		    n;
	FILE*       tabela;
	tabela = fopen(arquivo, "r");
	if (tabela == NULL)	exit(-1);
	while (!feof(tabela))
	{
		n = fscanf(tabela, mascara, codigo);
		printf("scanf() leu %d\t[%s]\t(%d)\n", n, codigo, strlen(codigo));
	}
	fclose(tabela);
	return;
};	// fase1()

// fim do texto

Le e mostra todas as strings no arquivo de entrada. Veja o final, usando o seu arquivo 

string #625 scanf(1) leu        [GROUP] (5)
string #626 scanf(1) leu        [=]     (1)
string #627 scanf(1) leu        [TIRS_THERMAL_CONSTANTS]        (22)
string #628 scanf(1) leu        [K1_CONSTANT_BAND_10]   (19)
string #629 scanf(1) leu        [=]     (1)
string #630 scanf(1) leu        [774.8853]      (8)
string #631 scanf(1) leu        [K2_CONSTANT_BAND_10]   (19)
string #632 scanf(1) leu        [=]     (1)
string #633 scanf(1) leu        [1321.0789]     (9)
string #634 scanf(1) leu        [K1_CONSTANT_BAND_11]   (19)
string #635 scanf(1) leu        [=]     (1)
string #636 scanf(1) leu        [480.8883]      (8)
string #637 scanf(1) leu        [K2_CONSTANT_BAND_11]   (19)
string #638 scanf(1) leu        [=]     (1)
string #639 scanf(1) leu        [1201.1442]     (9)
string #640 scanf(1) leu        [END_GROUP]     (9)
string #641 scanf(1) leu        [=]     (1)
string #642 scanf(1) leu        [TIRS_THERMAL_CONSTANTS]        (22)
string #643 scanf(1) leu        [GROUP] (5)
string #644 scanf(1) leu        [=]     (1)
string #645 scanf(1) leu        [PROJECTION_PARAMETERS] (21)
string #646 scanf(1) leu        [MAP_PROJECTION]        (14)
string #647 scanf(1) leu        [=]     (1)
string #648 scanf(1) leu        ["UTM"] (5)
string #649 scanf(1) leu        [DATUM] (5)
string #650 scanf(1) leu        [=]     (1)
string #651 scanf(1) leu        ["WGS84"]       (7)
string #652 scanf(1) leu        [ELLIPSOID]     (9)
string #653 scanf(1) leu        [=]     (1)
string #654 scanf(1) leu        ["WGS84"]       (7)
string #655 scanf(1) leu        [UTM_ZONE]      (8)
string #656 scanf(1) leu        [=]     (1)
string #657 scanf(1) leu        [23]    (2)
string #658 scanf(1) leu        [GRID_CELL_SIZE_PANCHROMATIC]   (27)
string #659 scanf(1) leu        [=]     (1)
string #660 scanf(1) leu        [15.00] (5)
string #661 scanf(1) leu        [GRID_CELL_SIZE_REFLECTIVE]     (25)
string #662 scanf(1) leu        [=]     (1)
string #663 scanf(1) leu        [30.00] (5)
string #664 scanf(1) leu        [GRID_CELL_SIZE_THERMAL]        (22)
string #665 scanf(1) leu        [=]     (1)
string #666 scanf(1) leu        [30.00] (5)
string #667 scanf(1) leu        [ORIENTATION]   (11)
string #668 scanf(1) leu        [=]     (1)
string #669 scanf(1) leu        ["NORTH_UP"]    (10)
string #670 scanf(1) leu        [RESAMPLING_OPTION]     (17)
string #671 scanf(1) leu        [=]     (1)
string #672 scanf(1) leu        ["CUBIC_CONVOLUTION"]   (19)
string #673 scanf(1) leu        [END_GROUP]     (9)
string #674 scanf(1) leu        [=]     (1)
string #675 scanf(1) leu        [PROJECTION_PARAMETERS] (21)
string #676 scanf(1) leu        [END_GROUP]     (9)
string #677 scanf(1) leu        [=]     (1)
string #678 scanf(1) leu        [L1_METADATA_FILE]      (16)
string #679 scanf(1) leu        [END]   (3)
string #680 scanf(-1) leu       [END]   (3)

Veja que a string 628 é a que está procurando...

 

O valor entre () em scanf() é o valor de n, o total de itens lidos por scanf() e vale 1 quando leu uma string e -1 por exemplo o final de arquivo.

 

strcmp() descrita em int strcmp ( const char * str1, const char * str2 );

 

compara as strings e faz o resto do que você precisa. A função retorna zero quando as strings são iguais. Então você procura  a primeira, quando achar procura a segunda e aí o valor do campo vai ser o retornado em codigo no programa, a próxima strif se o arquivo não terminar bem nessa hora...

 

É só isso. Entendeu? Quer ver um exemplo ainda?

 

 

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!