Guest hugo chagas de olivera Postado Outubro 11, 2005 Denunciar Share Postado Outubro 11, 2005 ae galera to fazendo um trabalho em linguagem c e não estou dando conta de fazer com que meu programa so aceite caracteres numericos...utilizo o linux pra programar..desde já agradeço pela ajuda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 klaus Postado Outubro 11, 2005 Denunciar Share Postado Outubro 11, 2005 Adaptando uma função que está no livro The C Programming Language, 2nd Edition... #include <stdio.h> #include <ctype.h> int getint(int *cpf); int main(void) { int cpf; if ((getint(&cpf) != 9)) printf("CPF invalido\n"); else printf("%d\n", cpf); return 0; } int getint(int *cpf) { int c; int contador; /* pula espaços em branco */ while (isspace(c = getchar())) ; if (!isdigit(c)) return 0; for (*cpf = 0, contador = 0; isdigit(c); c = getchar(), contador++) *cpf = 10 * *cpf + (c - '0'); return contador; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Outubro 12, 2005 Denunciar Share Postado Outubro 12, 2005 Opa!Um código baseado nos valores decimais correspondentes aos caracteres na tabela ASCII. Os correspondentes em decimal dos caracteres numéricos (números de 0 a 9) na tabela vão de 48 a 57. Sendo assim, temos o código:bool isNumber( char cpf[] ) { for ( int i = 0; i < 11; i++ ) { if ( cpf[ i ] >= 48 && cpf[ i ] <= 57 ) return true; else return false; } }Algumas observações:1 - No laço "for" pode-se usar a função "strlen", contida na biblioteca "string.h", para achar o comprimento da sua string e substituir o 11 que eu coloquei, pois coloquei 11 porque é o número de dígitos do CPF, mas você pode querer usar em string numéricas de outros comprimentos.2 - Você pode se basear no código acima e na tabela ASCII para testar também se a sring é completamente formada por letras, sabendo que, nessa tabela, letras maiúsculas são diferentes das minúsculas.Até mais! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FibraOptica Postado Outubro 12, 2005 Denunciar Share Postado Outubro 12, 2005 2 - Você pode se basear no código acima e na tabela ASCII para testar também se a sring é completamente formada por letras, sabendo que, nessa tabela, letras maiúsculas são diferentes das minúsculas.Aproveitando o tópico, para transformar um caracter em um número (às vezes isto pode ser muito útil) é só fazer: char CARACTER; int NUMERO ; NUMERO = CARACTER - '0'; Se CARACTER estiver na faixa 48 à 57, NUMERO terá o valor correspondente. EX: CARACTER = '0'; NUMERO = CARACTER - '0' /* o resultado é 0 */ CARACTER = '1'; NUMERO = CARACTER - '0' /* o resultado é 1, e assim vai.. */ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest hugo chagas de olivera
ae galera to fazendo um trabalho em linguagem c e não estou dando conta de fazer com que meu programa so aceite caracteres numericos...
utilizo o linux pra programar..
desde já agradeço pela ajuda
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.