Ir ao conteúdo
  • Cadastre-se

nao acho o erro desse codigo


Posts recomendados

 

no if/else mostra que e esse o erro [Error] expected ';' before 'else'

void main (void)

{

 

printf ("Aréa de usuário")

 ; printf ("Login: ")

 

  ; scanf ("%", login);

 

printf ("Senha: ");

scanf; ("%s",senha);

 

  if (login ="admin") e (senha="123")

     

 

         ;logado = 1;

 printf ("usuario logado")

   else 

Link para o comentário
Compartilhar em outros sites

Olá!

 

 

Sou iniciante em C, mas acho que posso lhe ajudar . . .

 

 

- |24|error: expected ‘;’ before ‘else’| - esse erro está dizendo que é esperado um ponto e virgula ( ; ), antes do else, ou seja, você esqueceu de colocar o ponto e virgula após algum comando, mais especificamente a função printf() da linha anterior

 

 

- |14|warning: spurious trailing ‘%’ in format – esse alerta está lhe alertando para a falto do código de formatação do scanf() da linha anterior, scanf ("%", login); faltou você apenas colocar a letra “ s ” após o “ % ”

 

 

- |13|warning: too many arguments for format – esse alerta está lhe dizendo que você tem mais argumentos do que códigos de formatação para representar os mesmos, ou seja, você colocou o argumento “ login ” para a função scanf(), mas como você não definiu o código de formatação de forma correta %s, o compilador esta interpretando que % não é um código de formatação, por isso ele está dizendo que está faltando códigos de formatação para os argumentos.

 

 

- |19|error: ‘logado’ undeclared (first use in this function)| - aqui o erro está lhe dizendo que a variável logado, não foi declarada ainda em nenhuma parte do programa, e por isso mesmo você não pode atribuir nenhum valor a variável antes de declará-la, basta declará-la no inicio do código junto as outras variáveis

 

 

- os três alertas seguintes ocorrem pelo mesmo problema, o fato de você ter colocado o “ ; ” onde não deveria

scanf ; ("%s",senha);

é só tirar o “ ; ” do meio:

scanf ("%s",senha);

|16|warning: statement with no effect

 

|16|warning: left-hand operand of comma expression has no effect

 

|16|warning: statement with no effect

 

 

- esta parte está completamente errada por dois motivos:

if (login ="admin") e (senha="123");logado = 1;

O primeiro motivo é que:

 

Na linguagem C o sinal ( operador ) “ = ” e o sinal ( operador ) ” == ”, tem significados e funções completamente diferentes:

 

O sinal “ = ” é usado como operador de atribuição, ou seja, é usado para atribuir um valor a uma determinada variável, e não para comparação de valores, por exemplo:

int idade;idade = 12;

Primeiro foi declarado uma variável do tipo inteiro cujo nome é idade, depois foi atribuído ( dado – atribuído ) o valor 12 a variável idade, que a partir deste momento armazena o valor 12, apenas observando que você pode fazer as duas coisas ao mesmo tempo

int idade = 12;

neste exemplo atribuiu-se um valor a variável idade ao mesmo tempo em que ela foi declarada.

 

O sinal “ == ” é um operador usado para a realização de comparação entre dois valores, exemplo:

int idade_1 = 12;int idade_2 = 13;if ( idade_1 == idade_2 )  {     printf(“Idades Iguais . . .”);  }

O segundo motivo é que:

 

O comando if() é usado para a avaliação de condições, ou seja, o if irá avaliar uma ou mais condições, e caso a/as condições sejam verdadeira irá executar o código logo após o if, e que de preferência o código deve estar contido dentro de abre e fecha chaves { }

 

se fosse o caso do exemplo acima que citei o código estaria correto e poderia ser usado sem problemas, pois, se está comparando dois valores numericos, mas no seu caso você que comparar os valores de um vetor de caracteres ( strings ) palavras e infelizmente a linguagem c não consegue fazer a comparação entre duas strings ( palavras ) de forma direta, causando erros, exemplo:

char nome_1 [ 10 ] = “marcos”;char nome_2 [ 10 ] = “jose”;if ( nome_1 == nome_2 )  {     printf(“Nomes Iguais . . .”);  }

Muito provavelmente o código acima seria compilado e executado normalmente, mas o código após o if não seria executado, pelo motivo acima já citado.

 

Para resolver este problema você tem que usar uma função que tenha sido especialmente desenvolvida para a tarefa, strcmp();

char nome_1 [ 10 ] = “marcos”;char nome_2 [ 10 ] = “jose”;if ( strcmp ( nome_1, nome_2 ) == 0 )  {     printf(“Nomes Iguais . . .”);  }

strcmp() recebe os valores de duas variáveis do tipo ( string ) e as analisa ( compara ), se os valores das duas é igual, a função retorna 0, caso contrario retorna 1, sendo que independentemente de retronar 0 ou 1, o valor de retorno será avaliado diretamente pelo if()

 

 

A função se encontra na biblioteca #include<string.h>

 

 

Bom por hora é só, espero que tenha entendido o que eu quis dizer, com o que eu lhe expliquei acima tenho certeza que lhe dará alguma luz para terminar o seu codigo!

 

Obs: a não ser que o problema tenha sido causado por editores de texto, tome muito cuidado por onde você deixa os ; isso pode lhe causar problemas no futuro.

 

 

Ubuntu 14.04  GCC 4.8  CodeBlocks 13.12

 

 

Espero Ter Ajudado ! ! !

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!