Você está aqui: C ::: Dicas & Truques ::: Strings e Caracteres |
Como escrever uma função is_numeric() em C que verifica se uma string contém apenas dígitos de 0 a 9Quantidade de visualizações: 10258 vezes |
Em algumas situações precisamos verificar se uma string contém apenas dígitos de 0 a 9, ou seja, é um valor numérico inteiro válido. Para isso podemos usar a função personalizada em C que mostro nesta dica. Veja que o segredo é passar todos os caracteres individualmente para a função isdigit(). Veja o código:----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
// função personalizada que permite verificar se uma
// string contém apenas dígitos de 0 a 9
int is_numeric(const char *str){
int res = 1; // passou no teste
// vamos percorrer todos os caracteres da string
// e testar se cada um é um dígito. Se não
// for nós marcamos res como 0 e retornamos
while(*str){
if(!isdigit(*str)){
res = 0;
break;
}
// vamos passar para o próximo caractere
str++;
}
return res;
}
int main(int argc, char *argv[]){
char valor[20]; // vamos guardar o valor digitado aqui
// vamos ler o valor informado pelo usuário
printf("Digite qualquer coisa e tecle ENTER: ");
gets(valor);
// vamos verificar se o usuário informou uma string
// que contém apenas dígitos de 0 a 9
if(is_numeric(valor))
printf("Voce informou uma string numerica");
else
printf("Voce NAO informou uma string numerica");
puts("\n\n");
system("PAUSE");
return 0;
}
E, antes que perguntem como é possível verificar se a string contém um valor fracionário válido, a seguinte alteração pode ser feita: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
int is_numeric(const char *str){
int res = 1; // passou no teste
// vamos percorrer todos os caracteres da string
// e testar se cada um é um dígito ou uma vírgula. Se não
// for nós marcamos res como 0 e retornamos
while(*str){
if((!isdigit(*str)) and (*str != ',')){
res = 0;
break;
}
// vamos passar para o próximo caractere
str++;
}
return res;
}
|
|
|
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






