Estou trabalhando em uma tarefa e, como parte dela, preciso extrair o número inteiro de uma string.
Eu tentei usar a atoi()
função, mas ela sempre retorna a 0
, então mudei para strtol()
, mas ainda retorna a 0
.
O objetivo é extrair os números inteiros da string e passá-los como argumentos para uma função diferente. Estou usando uma função que usa esses valores para atualizar alguns dados ( update_stats
).
Lembre-se de que eu sou bastante novo em programação na linguagem C, mas essa foi minha tentativa:
void get_number (char str[]) {
char *end;
int num;
num = strtol(str, &end, 10);
update_stats(num);
num = strtol(end, &end, 10);
update_stats(num);
}
O objetivo disso é em uma string "e5 d8"
(por exemplo), eu extrairia oe 5
a 8
partir dessa string.
O formato da string é sempre o mesmo.
Como posso fazer isso?
isdigit
antes de usarstrtol
atoi
e strtol
esperam receber o ponteiro para o primeiro caractere de um numeral - seu ponteiro já deve estar apontando para um dígito. Nem "e" nem "d" são um dígito quando a base é 10. Para encontrar os números na sequência, você deve escrever um código para examinar cada caractere para determinar se é um dígito ou não. Depois de encontrar um dígito, você pode convertê-lo (apenas um dígito) ou a sequência de dígitos (vários dígitos) para um número, dependendo da sua necessidade.
"e5 d8"
to strtol
não é uma maneira correta de encontrar o “5” e convertê-lo em um número.