• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tmcp

Extrair numeros de uma string?!

5 mensagens neste tópico

É possivel extrair algarismos ou numeros de uma string e definilos todos como um so inteiro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se o conjunto de caracteres numéricos presentes na string couber numa variável de tipo numérico (como int), é. Basicamente, é preciso iterar pelos caracteres da string, para cada um deles, verificar se é um carácter numérico (podes usar as funções da biblioteca ctype.h para isso), e, no caso de ser, juntá-lo ao inteiro (converter o carácter para inteiro, somá-lo ao inteiro "principal", e multiplicar por 10). No fim, divides o inteiro por 10, e tens aí os algarismos extraídos.

Aqui vai um exemplo (não testado) de uma função que faz o que pretendes - recebe uma string e retorna o inteiro com os algarismos encontrados na string, por ordem, da esquerda para a direita:

int extract_nums(char * string)
{
int chars=0; //variável onde ficam armazenados os dígitos extraídos
int i;

for(i=0; string[i]!='\0'; i++) //percorrer todos os caracteres
{
	if(isdigit(string[i])) //verificar se o carácter é numérico
	{
		chars += (int)(string[i])-'0'; //forma "artesanal" de converter o carácter para inteiro
		chars *= 10;
	}
}
chars /= 10;

return chars;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou então utilizas a função atoi

Exactamente, podes simplesmente fazer "int chars = (atoi)(str);"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas a função atoi só converte até ser encontrado um carácter não-numérico. Por exemplo, aplicada na string "123a45", o resultado seria apenas 123 - não extrairia todos os algarismos. Agora é uma questão de saber se o tmcp quer extrair todos os digitos ou só os que aparecem no início da string.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora