Validador de CPF
Publicado por Marcos (última atualização em 17/01/2013)
[ Hits: 6.773 ]
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 exibir todos os divisores de um numero
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









