Ir ao conteúdo
  • Cadastre-se
Eduardo Ribeiro_720097

Validação captcha

Recommended Posts

PRECISO FAZER A COMPARAÇÃO PARA SABER SE O QUE ESTA SENDO LIDO DO TECLADO É O mesmo QUE ESTA SENDO GERADO, O PROBLEMA É QUE O QUE ESTA SENDO DIGITADO É UMA STRING E O QUE ESTA SENDO GERADO É UM VETOR INTEIRO.

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

int*vetorCaptcha(int vetorCaptchaFinal[6]){

    int cont, vetorDeCaptcha[18], vetorDeNumeroAleatorio[6];

    for(cont = 0; cont < 6; cont++){
        vetorDeCaptcha[cont] = 48 + rand()% 10;
    }
    for(cont = 6; cont < 12; cont++){
        vetorDeCaptcha[cont] = 65 + rand()% 26;
    }
    for(cont = 12; cont < 18; cont++){
        vetorDeCaptcha[cont] = 97 + rand()% 26;
    }
    for(cont = 0; cont < 6; cont++){
        vetorDeNumeroAleatorio[cont] = rand() % 18;
    }
    for(cont = 0; cont < 6; cont++){
        vetorCaptchaFinal[cont] = vetorDeCaptcha[vetorDeNumeroAleatorio[cont]];

    }

    return vetorCaptchaFinal;


}

char * captchaDigitado(){

    char captchaTeclado[6];
    int *codigo;
    int cont;
    int vetor[6];

    codigo = vetorCaptcha(vetor);

    printf("Por favor, prove que você não é um robô digitando o código exibido:\n\n");

        for(cont = 0; cont < 6; cont++){
            printf("[%c]-", codigo[cont]);
        }
        printf("\n\n");

    gets(captchaTeclado);

    return captchaTeclado;
}

int validar(){

    do{
      int cont;
      int*leitura;
      int*captchaGerado;
      int erro;
      int vetor[6];

        leitura = captchaDigitado();
        captchaGerado = vetorCaptcha(vetor);

      for(cont = 0; cont < 6; cont++){
        if(captchaGerado != leitura){
          erro++;  }
      }
      if(erro == 1){

        return 1;

      }else{

        return 0; }
  }while(validar());

}


int main() {

    srand(time(NULL));
    setlocale(LC_ALL,"portuguese");

    captchaDigitado();


    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar do 'código gerado' for um vetor int, os valores representam caracteres, então você poderia criar um vetor char(string) do mesmo tamanho do 'codigo gerado'  e passar esses caracteres do codigo para essa nova string e assim você pode comparar com a 'string digitada'.

 

P.S: Quando você tem um problema em um código, e ele ter outros problemas, você não precisa criar outro tópico para resolver cada problema, apenas crie 'um' tópico para resolver o código, independente de quantos problemas houver.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Eduardo Ribeiro_720097 Da pra converter um número inteiro em um char e consequentemente em uma string, basta você pesquisar no fórum, há muitos tópicos falando do assunto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×