Jump to content
Fórum Script Brasil
  • 0

Campo de Login C


TkD

Question

#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.

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

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 by Binder
Link to comment
Share on other sites

  • 0
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.

Link to comment
Share on other sites

  • 0

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 by Binder
Link to comment
Share on other sites

  • 0

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);
}

Link to comment
Share on other sites

  • 0

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 by Binder
Link to comment
Share on other sites

  • 0

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 ficaria

if( 0 && 0)
Com o ponto de exclamação, a expressão se torna verdadeira.
if( 1 && 1)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...