Validador de CPF
Publicado por Marcos (última atualização em 17/01/2013)
[ Hits: 6.785 ]
Exemplo simples de um validador de CPF.
O script recebe um número de CPF e retorna se o número está correto ou qual sequência de dígitos verificadores eram esperados.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*função responsável por converter um caractere compreendido no intervalo de 0 a 9 em inteiro (no mesmo intervalo)*/
int conversor(char valor){
switch(valor){
case '9': return 9;
case '8': return 8;
case '7': return 7;
case '6': return 6;
case '5': return 5;
case '4': return 4;
case '3': return 3;
case '2': return 2;
case '1': return 1;
case '0': return 0;
}
}
void validarCPF(){
int numero[11], dig1,dig2,soma=0,valor,i;
char cpf[11];//armazena cpf digitado
printf("\nDigite o CPF (sem pontos e traco): \n\n\t>> ");
setbuf(stdin,NULL);//limpando buffer do teclado
gets(cpf);
// convertendo caracteres em int
for(i=0;i<11;i++){
numero[i]=conversor(cpf[i]);
}
// calculando primeiro dígito
for(i=0;i<9;i++)
soma+=numero[i]*(10-i);
valor=soma%11;
if(valor==0 || valor==1)
dig1=0;
else
dig1=11-valor;
numero[9]=dig1;
// calcualndo segundo dígito
soma=0;
for(i=0;i<10;i++)
soma+=numero[i]*(11-i);
valor=soma%11;
if(valor==0 || valor==1)
dig2=0;
else
dig2=11-valor;
// exibindo resultado
if(dig1==numero[9] && dig2==numero[10]){
printf("\n\nCPF correto: ");
for(i=0;i<11;i++)
printf(" %d",numero[i]);
}
else{
printf("\nProblemas nos digitos verificadores!");
printf("\n\nDigitos verificadores esperados para esta sequencia: %d%d",dig1,dig2);
}
printf("\n\n\n");
}
int main(){
int opcao;
do{
printf("\n\tPrograma para validar CPF\n\n");
printf("Selecione uma das opcoes disponiveis: \n");
printf("\n<1> Validar\n<0> Sair\n\n");
scanf("%d",&opcao);
switch(opcao){
case 1: validarCPF();
}
}while(opcao!=0);
return 0;
}
Preloader.c - Adaptação do Tarik Ahmad (Thiago Alexandre) para linux
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Erro ao instalar programa, "você tem pacotes retidos quebrados&qu... (13)
VOL já não é mais como antes? (15)
Como personalizar o lxde? [RESOLVIDO] (5)
Flatpaks não funcionam após atualizar pelo Gerenciador de Atualizações... (3)









