Ir ao conteúdo
  • Cadastre-se

Sistema de login simples


Xaws

Posts recomendados

O que há de errado?

 Se digito o usuário certo ele da como errado :oops:

PS: Caso esteja tudo errado me de uma base de pra onde ir.

 

char login[7] = "MEU_LOGIN";
char* login1;
char senha[9] = "MINHA_SENHA";
char* senha1;
main ()
{

printf("LOGIN: ");
scanf("%c",&login);
if (login == login1)
{
	printf("Logado");
}
else
{
	printf("error");
}
}

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

#include <string.h>

char login[15] = "MEU_LOGIN"; //Tem que ter mais espaço que a string. Pelo menos 1 a mais que a palavra.
char login1[15]; //Pode ser do mesmo tamanho que o login
char senha[15] = "MINHA_SENHA";
char senha1[15];
main ()
{

printf("LOGIN: ");
scanf("%s",login1); //String se lê com %s
if (strcmp(login, login1) == 0) //strcmp() é uma função da biblioteca string.h que compara 2 strings. Se for igual a 0 é porque as duas são iguais.
{
	printf("Logado");
}
else
{
	printf("error");
}
}

Eu acredito que assim funcione. Não pude testar, digitei direto aqui no fórum

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

14 minutos atrás, MassakiMsk disse:

#include <string.h>

char login[15] = "MEU_LOGIN"; //Tem que ter mais espaço que a string. Pelo menos 1 a mais que a palavra.
char login1[15]; //Pode ser do mesmo tamanho que o login
char senha[15] = "MINHA_SENHA";
char senha1[15];
main ()
{

printf("LOGIN: ");
scanf("%s",login1); //String se lê com %s
if (strcmp(login, login1) == 0) //strcmp() é uma função da biblioteca string.h que compara 2 strings. Se for igual a 0 é porque as duas são iguais.
{
	printf("Logado");
}
else
{
	printf("error");
}
}

Eu acredito que assim funcione. Não pude testar, digitei direto aqui no fórum

 

 Testei e não funcinou

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

A única coisa que precisa adicionar pra o código do @MassakiMsk funcionar é o incluir a biblioteca stdio.h.

 

Mas também dei uma melhorada no código:

#include <stdio.h>
#include <string.h>

int main ()
{
    char login[15] = "MEU_LOGIN"; //Tem que ter mais espaço que a string. Pelo menos 1 a mais que a palavra.
    char login1[15]; //Pode ser do mesmo tamanho que o login
    char senha[15] = "MINHA_SENHA";
    char senha1[15];

    printf("LOGIN: ");
    scanf("%s",login1); //String se lê com %s
    if (strcmp(login, login1) == 0) //strcmp() é uma função da biblioteca string.h que compara 2 strings. Se for igual a 0 é porque as duas são iguais.
    {
    	printf("Logado\n");
    }
    else
    {
    	printf("error\n");
    }
    
    return 0;
}

Coloquei a declaração das variáveis dentro do main() do programa, adicionei o tipo int da função main() e o return 0, entre outros detalhes...

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...

#include <stdio.h> // padrão

#include <stdlib.h> // padrão

#include <string.h> // Essa biblioteca serve para usar os structs e manipulação de strings

typedef struct{

 

char login[30]; // vetor login da struct pessoa

char senha[30]; // vetor senha da struct pessoa

} pessoa; pessoa p[1]; // diminuindo o nome da struct para "p" e o "[1]" é o máximo de pessoas com logins e senhas

 

int main(){

 

char login[30]; // responsável por armazenar a senha inserida pelo usuário

char senha[30]; // responsável por armazenar a senha inserida pelo usuário

 

strcpy(p[0].login, "kenesu"); // Definindo o login "kenesu" na struct

strcpy(p[0].senha, "123"); // Definindo a senha "123" na struct

 

printf("\nlogin:");

scanf("%s", login); // armazenando os dados inseridos pelo usuário para o vetor login que está dentro da função main

 

printf("\nsenha:");

scanf("%s", senha); // armazenando os dados inseridos pelo usuário para o vetor senha que está dentro da função main

 

if ((strcmp(login,p[0].login)==0) && (strcmp(senha,p[0].senha)==0)){ // A função strcmp é responsável por comparar string com string

printf("Usuário logado"); // se os vetores de dentro da struct tiver os mesmos dados do vetor interno da função main, usuário será logado.

}else{

printf("Login e/ou senha incorretos"); // senão, login ou senha incorreta.

}

return 0;

}

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Em 19/07/2017 às 22:39, Xaws disse:

O que há de errado?

 Se digito o usuário certo ele da como errado :oops:

PS: Caso esteja tudo errado me de uma base de pra onde ir.

 

 

Sim, está bem errado

 

    char  login[7] = "MEU_LOGIN";
    char* login1;
    char  senha[9] = "MINHA_SENHA";
    char* senha1;

 

não escreva assim. No caso de login e senha se isso é login e senha para comparar com o que vai ler use um nome mais significativo. login e longin1? Não, não está bom. E se está declarando uma constante deixe o computador contar. Escreva

 

    const char  o_login[] = "MEU_LOGIN";
    const char  a_senha[]  = "MINHA_SENHA";

 

Porque? porque assim não terá que mudar o tamanho se mudar o texto... Notou que você mesmo errou? "MEU_LOGIN" tem mesmo 7 letras? Não, não tem. Tem 10. Seu compilador deve ter avisado. Não leu?

 

E declare como const o que sabe que não vai mudar. Porque? Imagine que se esqueceu e confundiu login com login1 --- porque escolheu nomes ruins e pode acabar mesmo invertendo. Se declarar o primeiro como const o compilador te avisa antes de você ir adiante e o programa cancelar...

 

    char* login1;
    char* senha1;

 

NUNCA escreva assim. Está declarando login1 como char*, um ponteiro. Nunca deixe um ponteiro sem um valor.

 

prefira o simples

 

    char* login1 = NULL;
    char* senha1 = NULL;

 

Em 19/07/2017 às 22:39, Xaws disse:
scanf("%c",&login);
if (login == login1)
{
	printf("Logado");
}
else
{
	printf("error");
}

 

Veja o manual: scanf() retorna um int. Não testou. E se não ler nada o programa via seguir. Pra que se não leu nada? TESTE o retorno de scanf() sempre. Em especial se for ler números. 


Usou o especificador %c para ler login. Só que login é constante. Eu disse que era fácil de confundir. E %c lê só uma letrinha. Leia o manual. Seu programa vai cancelar.

 

Qual o propósito de comparar login com login1? são dois ponteiros e são claro diferentes. Nem dá pra saber o valor de login1 porque você não colocou nenhum...

 

Sugiro rever o que expliquei

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@kenesu    obrigado por postar essa solução ,  seu código funciona bem  , apenas precisa fazer a formatação dele , e se usar o compilador  / IDE  codeblocks , será fácil fazer a identação automaticamente  , apenas por selecionar todas as Linhas e  clicar em : plugins /  source code formatter(AStyle) , 

1638374334_identarcb.thumb.jpg.b273edb71158a2e1d13acd90825ddd63.jpg

e use o botão  " <> "   CODE que está desenhado lá na barra de ferramentas da janela de postar 

1717182024_barracode.jpg.96bd0de88d128be54de18949f743301c.jpg

e seu código ficaria assim  :

                                   /// não usar acentuacao nos coment's
                                   /// identar o códigos
#include <stdio.h>                 /// padrão
#include <stdlib.h>                /// padrão
#include <string.h>                /// Essa biblioteca serve para usar os
typedef struct                     /// structs e manipulaCAo de string's
{
  char login[30];                  /// vetor login da struct pessoa
  char senha[30];                  /// vetor senha da struct pessoa
}         pessoa;
int main()                         /// Eh o mAximo de pessoas com logins e senhas
{                                  /// vetor de struct's local e não GlobaL
  pessoa  p[ 10];                  /// diminuindo o nome da struct para "p" e o "[1]"
  char login[30];                  /// responsável por armazenar a senha inserida pelo usuario
  char senha[30];                  /// responsável por armazenar a senha inserida pelo usuario
  strcpy( p[0].login , "kenesu");  /// Definindo o login "kenesu" na struct
  strcpy( p[0].senha ,    "123");  /// Definindo a senha "123" na struct
  printf("login -: ");
  scanf("%s", login);              /// armazenando os dados inseridos pelo usuario para
  printf("senha -: ");             /// o vetor login que estA dentro da funCAo main
  scanf("%s", senha);              /// armazenando os dados inseridos pelo usuArio para o
                                   /// vetor senha que estA dentro da funCAo main
                                   ///
  if( strcmp( login , p[0].login) == 0  && strcmp( senha , p[0].senha) == 0 )
                                   /// 
  {                                /// A funCAo strcmp é responsável por comparar string com string
    printf("\n\tUsuário logado\n");/// se os vetores de dentro da struct tiver os mesmos dados
  }                                /// do vetor interno da funCAo main, usuArio será logado.
  else                             /// senAo, login ou senha incorreta.
  {
    printf("Login e/ou senha incorretos\n\n\n");
  }
  return 0;                        /// retorna para o windows com valor zero
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...