char validaCPF(char cpf[]) {
int digito1, digito2, temp = 0;
int cpfInteger[11];
for (char i = 0; i < 11; i++) {
cpfInteger[i] = (cpf[i] - 48);
}
/*Obtendo o primeiro digito verificador:
Os 9 primeiros algarismos são multiplicados pela sequência 10, 9, 8, 7, 6, 5, 4, 3, 2
(o primeiro por 10, o segundo por 9, e assim por diante);
Em seguida, calcula-se o resto “r1″ da divisão da soma dos resultados das multiplicações por 11,
e se o resto for zero ou 1, digito é zero, caso contrário digito = (11-r1) */
for (char i = 0; i < 9; i++)
temp += (cpfInteger[i] * (10 - i));
temp %= 11;
digito1 = (temp < 2) ? 0 : 11 - temp;
/*Obtendo o segundo digito verificador:
O dígito2 é calculado pela mesma regra, porém inclui-se o primeiro digito verificador ao final
da sequencia. Os 10 primeiros algarismos são multiplicados pela sequencia 11, 10, 9, ... etc...
(o primeiro por 11, o segundo por 10, e assim por diante);
procedendo da mesma maneira do primeiro digito*/
temp = 0;
for (char i = 0; i < 10; i++)
temp += (cpfInteger[i] * (11 - i));
temp %= 11;
digito2 = (temp < 2) ? 0 : 11 - temp;
/* Se os digitos verificadores obtidos forem iguais aos informados pelo usuário,
então o CPF é válido */
return (digito1 == cpfInteger[9] && digito2 == cpfInteger[10]);
}
int main(int argc, char** argv) {
char cpf[12];
printf("Entre com o cpf:\n");
scanf("%s", &cpf);
printf("%s", (validaCPF(cpf)) ? "cpf valido" : "cpf invalido");
}
Para escrever sua resposta aqui, entre ou crie uma conta.
Compartilhar