Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda para verificação de senha


Rapha

Pergunta

Boa noite, tenho prova daqui a alguns dias de ICC, e estou meio preocupado porque não consigo fazer um programa q leia uma senha e verifica se ela está correta ou não.... Eis o código q eu fiz.

#include <stdio.h>

#include <string.h>

main ()

{

char string[5];

printf ("Digite a senha de 5 digitos: ");

scanf ("%s", &string);

if (string=="asdfg")

{

printf ("\n Acesso permitido!");

}

else

{

printf ("\n Acesso negado!");

}

}

É bem simples, é pra treinar o if, mas tem alguma coisa errada não sei onde.... Por favor, se alguém souber fazer esse programa com esses comandos básicos, me responda!! Desde já eu agradeço!!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

#include <stdio.h>

#include <string.h>

main ()

{

char string[6];

printf ("Digite a senha de 5 digitos: ");

scanf ("%s", &string);

if (strcmp(string,"12345") == 1){

printf ("\n Acesso negado!");

return 0;

}

printf("\nAcesso permitido!");

return 1;

}

usei a strcmp para comparar as strings...

não sei se você tinha visto o que eu tinha postado antes, sem strcmp... lá eu compava letra por letra...

enfim...

no lugar de "12345" você põe a senha desejada...

a string tem que ter tamanho 6... para armazenar o '\ 0' ... que define o fim da string!

espero ter ajudado!

abraço!

*Atualizei novamente essa resposta, pois tive tempo de testar e não funcionou, pelo fato de strcmp retornar 1 se as strings forem diferentes, enfim, só troquei o 1 por 0 e 0 por 1.

Editado por Bruno Dhalsim
Link para o comentário
Compartilhar em outros sites

  • 0
#include <stdio.h>

#include <string.h>

main ()

{

char string[6];

printf ("Digite a senha de 5 digitos: ");

scanf ("%s", &string);

if (strcmp(string,"12345") == 1){

printf ("\n Acesso negado!");

return 0;

}

printf("\nAcesso permitido!");

return 1;

}

usei a strcmp para comparar as strings...

não sei se você tinha visto o que eu tinha postado antes, sem strcmp... lá eu compava letra por letra...

enfim...

no lugar de "12345" você põe a senha desejada...

a string tem que ter tamanho 6... para armazenar o '\ 0' ... que define o fim da string!

espero ter ajudado!

abraço!

*Atualizei novamente essa resposta, pois tive tempo de testar e não funcionou, pelo fato de strcmp retornar 1 se as strings forem diferentes, enfim, só troquei o 1 por 0 e 0 por 1.

Primeiramente, no scanf o '&' deve ser retirado. Da forma que está acima, vocês estão passando um ponteiro para um ponteiro de string, sendo que o scanf recebe um ponteiro de string para o %s. Provavelmente o compilador está dando um alerta sobre isso.

Bruno, teu código não funcionaria em todos os casos. O que acontece é que o strcmp faz uma comparação léxicográfica quantitativa(ele retorna o quanto a primeira string é maior que a segunda ou vice-versa). Você deve ter testado ela com algo com 1 caractere diferente, e trocando este caractere por um caractere visinho, para que o retorno seja 1. O correto seria comparar se o retorno do strcmp é != de 0, e caso seja, a senha está errada.

E pessoal, este código é perigoso. Em vez de %s, utilizem %5s, pois assim garantirão que se a senha digitada for maior que 5 digitos o programa vai ignorar os digitos seguintes sem estourar.

[]'s

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...