TkD Posted February 3, 2012 Report Share Posted February 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. Quote Link to comment Share on other sites More sharing options...
0 Binder Posted February 3, 2012 Report Share Posted February 3, 2012 (edited) 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"); Edited February 3, 2012 by Binder Quote Link to comment Share on other sites More sharing options...
0 TkD Posted February 3, 2012 Author Report Share Posted February 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. Quote Link to comment Share on other sites More sharing options...
0 Binder Posted February 3, 2012 Report Share Posted February 3, 2012 (edited) 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; } Edited February 3, 2012 by Binder Quote Link to comment Share on other sites More sharing options...
0 mJi Posted February 4, 2012 Report Share Posted February 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); } Quote Link to comment Share on other sites More sharing options...
0 Binder Posted February 4, 2012 Report Share Posted February 4, 2012 (edited) 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)? Edited February 4, 2012 by Binder Quote Link to comment Share on other sites More sharing options...
0 mJi Posted February 4, 2012 Report Share Posted February 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) Quote Link to comment Share on other sites More sharing options...
0 TkD Posted February 4, 2012 Author Report Share Posted February 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. Quote Link to comment Share on other sites More sharing options...
0 Binder Posted February 4, 2012 Report Share Posted February 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. Quote Link to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.