Validador de CPF
Publicado por Marcos (última atualização em 17/01/2013)
[ Hits: 6.842 ]
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;
}
Busca do código do produto-Vetores----
Também enche a memória, porém desta vez com processos
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
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
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)
Necessário autenticar ao imprimir - Ubuntu X Windowns (1)
O que houve com slackware ??? (11)
O Free Download Manager não abre no Fedora 43 KDE Plasma (2)









