Olá boa tarde!
Gostaria de uma ajuda no código abaixo! É um verificador dos dígitos do CPF, o programa esta funcionando com números de 11 dígitos, mas ao informar números com mais dígitos ou com dígitos sequencias (444444444444, 66666666666) ele informa que o código é válido. Alguém que conheça a lógica de verificação do CPF, pode me indicar o que deve implementar para inibir este erro!
#include <stdio.h>
int main()
{
char cpf[12];
int icpf[12];
int i,somador=0,digito1,result1,result2,digito2,valor;
printf("Digite o CPF: ");
scanf(" %s",cpf);
for(i=0; i<11; i++)
{
icpf[i]=cpf[i]-48;
}
for(i=0; i<9; i++)
{
somador+=icpf[i]*(10-i);
}
result1=somador%11;
if( (result1==0) || (result1==1) )
{
digito1=0;
}
else
{
digito1 = 11-result1;
}
somador=0;
for(i=0; i<10; i++)
{
somador+=icpf[i]*(11-i);
}
valor=(somador/11)*11;
result2=somador-valor;
if( (result2==0) || (result2==1) )
{
digito2=0;
}
else
{
digito2=11-result2;
}
if((digito1==icpf[9]) && (digito2==icpf[10]))
{
printf("\nEste CPF e valido!.\n");
}
else
{
printf("CPF Invalido e/ou problemas com os digitos.\n");
}
return 0;
}