asantos38 Postado Dezembro 27, 2016 Denunciar Share Postado Dezembro 27, 2016 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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Exata0mente Postado Dezembro 28, 2016 Denunciar Share Postado Dezembro 28, 2016 (editado) 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 Dezembro 28, 2016 por Exata0mente http://www.cplusplus.com/reference/cstring/strcmp/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 asantos38 Postado Dezembro 28, 2016 Autor Denunciar Share Postado Dezembro 28, 2016 Obrigado, amigo! Fiz a substituição e rodou legal. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
asantos38
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:
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.