TkD Postado Fevereiro 3, 2012 Denunciar Share Postado Fevereiro 3, 2012 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { //Variaveis char login, senha; //Entrada printf("Digite seu Login: "); scanf("%s", &login); printf("\nDigite sua Senha: "); scanf("%s", &senha); //Saida if (login=='login' && senha=='senha') printf("Login e Senha Corretos"); else printf("Login ou Senha Invalido"); printf("\n\n"); system("pause"); }No script acima, mostra que estou tentando fazer um campo de login. Onde Login e Senha são requisitadoss.Mas está dando Senha invalida sempre, vai ver eu esqueci a senha. :lol: Deixando mais uma duvida.Ao eu colocar ,fgets, gets. Mostra o seguinte erro no DevC++ invalid conversion from `char' to `char*' initializing argument 1 of `char* gets(char*)' Grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Fevereiro 3, 2012 Denunciar Share Postado Fevereiro 3, 2012 (editado) Opa, no seu código tem alguns erros:1) Lembre-se que se você declarar do jeito que está, as variáveis irão armazenar apenas uma string.//Variaveis char login, senha; Caso queira armazenar mais de um caracter dentro da string, faça assim: //Variaveis char login[10], senha[10]; 2) Acho que você se perdeu um pouco em relação ao teste de validação de login, ou seja nunca vai entrar naquele primeiro if, pois você declarou suas variaveis como char, de um caracter,como explicado anteriormente e está testando uma string. Eu faria assim: if (login=="joao" && senha=="teste") printf("Login e Senha Corretos"); else printf("Login ou Senha Invalido"); Editado Fevereiro 3, 2012 por Binder Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TkD Postado Fevereiro 3, 2012 Autor Denunciar Share Postado Fevereiro 3, 2012 Opa, no seu código tem alguns erros:1) Lembre-se que se você declarar do jeito que está, as variáveis irão armazenar apenas uma string.//Variaveis char login, senha; Caso queira armazenar mais de um caracter dentro da string, faça assim: //Variaveis char login[10], senha[10]; 2) Acho que você se perdeu um pouco em relação ao teste de validação de login, ou seja nunca vai entrar naquele primeiro if, pois você declarou suas variaveis como char, de um caracter,como explicado anteriormente e está testando uma string. Eu faria assim: if (login=="joao" && senha=="teste") printf("Login e Senha Corretos"); else printf("Login ou Senha Invalido"); Eu fiz umas alterações pelo que eu entendi no que você falou, mais o erro ainda persiste. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { //Variaveis char login[10], senha[10]; //Entrada printf("Digite seu Login: "); gets(login); printf("\nDigite sua Senha: "); gets(senha); //Saida if (login=="logteste" && senha=="senteste") printf("Login e Senha Corretos"); else printf("Login ou Senha Invalido"); printf("\n\n"); system("pause"); }Obrigado. Att. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Fevereiro 3, 2012 Denunciar Share Postado Fevereiro 3, 2012 (editado) Opa, testei aqui, e também não consegui encontrar o erro por enquanto, assim que descobrir te informo. Fiz um validação de login, utilizando inteiros, da uma olhada.#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { //Variaveis int a, b; //Entrada printf("Digite seu Login: "); scanf("%d",&a); printf("\nDigite sua Senha: "); scanf("%d",&b); //Saida if (a== 155 && b == 123){ printf("Login e Senha Corretos\n\n");} else{ printf("Login ou Senha Invalido\n\n");} system("pause"); return 0; } Editado Fevereiro 3, 2012 por Binder Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Fevereiro 4, 2012 Denunciar Share Postado Fevereiro 4, 2012 Vocês estão cometendo um erro: em C, comparar strings com o operador '==' não é correto. É necessário comparar caractere por caractere. É isso que a função strcmp() faz.Ficaria algo assim:#include <stdio.h> #include <string.h> int main(){ char login[10], senha[10]; printf("Digite seu Login: "); gets(login); printf("\nDigite sua Senha: "); gets(senha); if (!strcmp(login, "logteste") && !strcmp(senha, "senteste")) printf("Login e Senha Corretos"); else printf("Login ou Senha Invalido"); printf("\n\n"); return(0); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Fevereiro 4, 2012 Denunciar Share Postado Fevereiro 4, 2012 (editado) Olá mJi, obrigado pela orientação. Só não entendi o porque desse codigo: !strcmp(login, "logteste")Ou seja, como a função strcmp que compara duas strings caracter por caracter, porque o sinal de exclamação? nesse caso seria para ser diferente do que foi pré-definido no if (condição)? Editado Fevereiro 4, 2012 por Binder Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Fevereiro 4, 2012 Denunciar Share Postado Fevereiro 4, 2012 O sinal de exclamação serve para inverter o resultado da expressão.strcmp() compara duas strings, e retorna:A zero value indicates that both strings are equal.A value greater than zero indicates that the first character that does not match has a greater value in str1 than in str2; And a value less than zero indicates the opposite.Ou seja, se as strings são iguais, retorna zero.Portanto, se o login e a senha forem corretos, ambas as chamadas á strcmp() vão retornar zero. Isso resultaria em 'FALSE' e iria direto para o 'else', pois a expressão ficariaif( 0 && 0) Com o ponto de exclamação, a expressão se torna verdadeira. if( 1 && 1) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TkD Postado Fevereiro 4, 2012 Autor Denunciar Share Postado Fevereiro 4, 2012 Muito Bom mJi.Realmente não tinha pensado sobre o strcmp.Muito Obrigado pela sua ajuda, e a de Binder. Valeu a todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Fevereiro 4, 2012 Denunciar Share Postado Fevereiro 4, 2012 Muito obrigado mJi pela sua explicação e sua atenção. TkD, desculpa por não saber te responder sobre sua dúvida, mas o que vale é a intenção.Abraço a todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
TkD
No script acima, mostra que estou tentando fazer um campo de login. Onde Login e Senha são requisitadoss.
Mas está dando Senha invalida sempre, vai ver eu esqueci a senha. :lol:
Deixando mais uma duvida.
Ao eu colocar ,fgets, gets. Mostra o seguinte erro no DevC++
invalid conversion from `char' to `char*'
initializing argument 1 of `char* gets(char*)'
Grato.
Link para o comentário
Compartilhar em outros sites
8 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.