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

Campo de Login C


TkD

Pergunta

#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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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");

Editado por Binder
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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;
       
}

Editado por Binder
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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)?

Editado por Binder
Link para o comentário
Compartilhar em outros 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 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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...