Ir ao conteúdo

Posts recomendados

Postado

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

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
  • 4 anos depois...
Postado

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

@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
}

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!