Array
(
)

Validação de CPF!

Rafael Bueno
   - 08 mai 2007

Alguem pode me ajudar!
Estou com um sistema de validação de CPF sem utilizar ponteiros!
Segue o txt.! Por favor me ajudem!!!!!!

//////////////CLASSE PRINCIPAL /////////////////////////////////////
#include <stdio.h>
include <stdlib.h>
include ´minhaBiblioteca.h´

char validaCPF{char cpf};
void verificaCPF{char cpf};

define fim = ´\n´;

int main(void){

//ENTRADA DE DADOS.
char cpf[14];

printf(´Digite um CPF: ´);
scanf(´¬s´,&cpf);
cpf = strcat(cpf,fim);

// VERIFICANDO O TAMANHO DO ARRAY DE CARACTERES.
if(strlen(cpf)==14){
validaCPF(cpf);
verificaCPF(cpf);
}else{
if(strlen(cpf)==11){
verificaCPF(cpf);
}else{
printf(´\n Favor digitar um valor valido: xxx.xxx.xxx-xx ou xxxxxxxxxxx´);
system(´PAUSE´);
return 0;
}
}

//SAIDA - IMPRESSÃO
printf(´\nO CPF digitado foi ´, cpf);

system(´PAUSE´);
return 0;
}

///////////////////////BIBLIOTECA ///////////////////////////////////////////

#include <stdio.h>
include <stdlib.h>

//RETIRANDO OS PONTOS E A BARRA.

char validaCPF(char cpf){

strcpy(&cpf[3], &cpf[3+1]);
strcpy(&cpf[7], &cpf[7+1]);
strcpy(&cpf[11], &cpf[11+1]);

return cpf;
}


// VERIFICA SE O CPF INSERIDO É VALIDO.

void verificaCPF(char cpf){

int cpfInt;
int novoCpf;
int divisao;
int resto;
int i;
int j;


// VERIFICANDO O PRIMEIRO DIGITO -XX.

for(i=0;i<strlen(cpf)-2;i++){
for(j=10;j>=2;j--){

cpfInt = char[i] - ´0´;
novoCpf += (cpfInt * j);

}

divisao = novoCpf/11;
resto = novoCpf¬11;

if(resto<2){
if((strcmp(char[9], ´0´))!=0)
printf(´Favor digitar um CPF válido.´);
}else{

resto = 11-resto;
if((strcmp(char[9], (´´+resto)))!=0)
printf(´Favor digitar um CPF válido.´);

}


//VERIFICANDO O SEGUNDO DIGITO -XX.

for(i=0;i<strlen(cpf)-1;i++){
for(j=11;j>=2;j--){

cpfInt = char[i] - ´0´;
novoCpf += (cpfInt * j);

}

divisao = novoCpf/11;
resto = novoCpf¬11;

if(resto<2){
if((strcmp(char[10], ´0´))!=0)
printf(´Favor digitar um CPF válido.´);
}else{

resto = 11-resto;
if((strcmp(char[10], (´´+resto)))!=0)
printf(´Favor digitar um CPF válido.´);

}

//IMPRESSÃO FINAL.

printf(´O CPF É VALIDO!!´);

}




Muito obrigado!
Rafael Bueno


Rodc
   - 08 mai 2007

Mas qual e o seu problema?


Rafael Bueno
   - 08 mai 2007

Nessa parte do código!

char validaCPF(char cpf){

strcpy(&cpf[3], &cpf[3+1]);
strcpy(&cpf[7], &cpf[7+1]);
strcpy(&cpf[11], &cpf[11+1]);

return cpf;
}


Rodc
   - 08 mai 2007

Acho que quando você chama uma posição do vetor ele já retorna como sendo ponteiro.
Tenta assim:
#Código

char * validaCPF(char *cpf){ 

strcpy(cpf[3], cpf[3+1]);
strcpy(cpf[7], cpf[7+1]);
strcpy(cpf[11], cpf[11+1]);

return cpf;
}



Rafael Bueno
   - 08 mai 2007

Não funcionou!
Tá da seguinte forma pra facilitar a visualização!

-------------------------------MAIN-----------------------------------------
#include <stdio.h>
include <stdlib.h>
include ´biblioteca.h´

int main(void){

//ENTRADA DE DADOS.
char cpf[14];

printf(´\nDigite um CPF: ´);
scanf(´¬s´,&cpf);
validaCPF(cpf);
printf(´\n ¬s´, cpf);
system(´PAUSE´);
return 0;

}

--------------------------------biblioteca.h-------------------------------------
include <stdio.h>
include <stdlib.h>

//RETIRANDO OS PONTOS E A BARRA.

char * validaCPF(char *cpf){

strcpy(cpf[3], cpf[3+1]);
strcpy(cpf[7], cpf[7+1]);
strcpy(cpf[11], cpf[11+1]);

return cpf;
}
------------------------------------------------------------------------------------


Mudei conforme o modelo que você passou!
Mas não rolou!

[Warning] passing arg 1 of ´strcpy´ makes pointer from integer without a cast

Tá dando esse erro em todos os campos! O que será?
Ele tah reclamando de pointer e integer! mas tentei arrumar e não rolou!

Agradeço muito se alguem puder me ajudar!


Rodc
   - 08 mai 2007

Tenta assim então:
#Código

char * validaCPF(char *cpf){
strcpy(&cpf[3], &cpf[3+1]);
strcpy(&cpf[7], &cpf[7+1]);
strcpy(&cpf[11], &cpf[11+1]);

return cpf;
}



Rafael Bueno
   - 08 mai 2007

AE FUNCIONOOO!!!
OBRIGADO MESMO!