Validador de CPF
Publicado por Marcos (última atualização em 17/01/2013)
[ Hits: 6.841 ]
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;
}
Função para validação de datas
Simulador do Sorteio da Mega Sena
Imprime a soma dos numeros positivos e negativos
Programa para demonstrar operadores
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
OCS Inventory NG: Instalação de Agentes Linux e Windows + Autenticação HTTP
Removere linux-image-6... [RESOLVIDO] (2)
Quando vocês pararam de testar distros? (19)
O que houve com slackware ??? (6)









