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

Erro em programa simples de login


asantos38

Pergunta

Boa tarde a todos os membros do fórum.

Fiz um pequeno programa de login, mas ele sempre retorna sucesso no login mesmo digitando um nome errado.

Acredito que o erro esteja no if, mas não tenho certeza.

Agradeço desde já a quem explicar o erro.

segue o código:

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

typedef struct{
    char nome[20];
    char senha[8];
}Login;

int main(int nNumberofArgs, char *pszArgs[])
{
    Login login;

    printf("Digite a nome: ");
    scanf("%s", login.nome);

    printf("Digite a senha: ");
    scanf("%s", login.senha);

    if(strcmp(login.senha, "laranja") && strcmp(login.nome, "Angelo")){
        printf("Erro em senha ou no nome.");
    }else{
        printf("Acesso garantido!");
    }

    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá amigo!

O erro está no operador lógico que utilizou no if.

A função strcmp retorna um inteiro 0 quando as palavras são iguais. O erro que seu código apresenta é que se uma das condições forem satisfeita ele dá acesso. O correto é usar o operador lógico OU (||). Veja

"1 && 1 = 1" *** "1 || 1 = 1"

"1 && 0 = 0" *** "1 || 0 = 1"

"0 && 1 = 0" *** "0 || 1 = 1"

"0 && 0 = 0" *** "0 || 0 = 0"

Como a saída que diz "Acesso garantido!" é a saída else (0), se qualquer uma das condições tivesse uma ou nenhuma string correta a saída seria 0. Usando o operador lógico OU seria diferente: a única forma de o resultado ser 0 e ir para o else é se, e somente se, o retorno dos dois strcmp forem 0.

if(strcmp(login.senha, "laranja") || strcmp(login.nome, "Angelo"))

 

Editado por Exata0mente
http://www.cplusplus.com/reference/cstring/strcmp/
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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...