o que tem de errado nesse programa [RESOLVIDO]

1. o que tem de errado nesse programa [RESOLVIDO]

crashPh4nton
jhonyjhous

(usa Debian)

Enviado em 20/09/2012 - 13:03h

fiz um programinha que cadastra login e senha e depois para entrar no programa tem que digitar o login e senha , se digitar o login ou a senha errado ele diz que ta invalido, mais nao funciona quando digito errado nao aparece fiz alguma coisa errado ? segue o codigo >>

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>



main(){

char log[50];
int senh;

printf("\t\tCadastre-se");
printf("\n\nlogin :");scanf("%s",log);
printf("\nsenha :");scanf("%d",&senh);

system("cls");

printf("Parabens cadastro feito com sucesso !");
printf("\n\nPara entrar no programa digite o login e a senha");
printf("\n\nlogin :");scanf("%s",log);
printf("\nsenha :");scanf("%d",&senh);

if (log!=log){
printf("login invalido !");}
if(senh!=senh){
printf("senha invalida !");}

else{
printf("\n\n\t\t---------------------BEM VINDO AO PROGRAMA !-------------------");
}


getch();
}



  


2. MELHOR RESPOSTA

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 20/09/2012 - 18:26h

strcmp(string1, string2);

É uma função que retorna o inteiro 0 se as strings forem iguais.

Faça um if(), se retornar 0, então são iguais, senão são diferentes.

3. Re: o que tem de errado nesse programa [RESOLVIDO]

Mariana Ribeiro Mendes
meldenne

(usa Linux Mint)

Enviado em 20/09/2012 - 13:22h

Variáveis, você não está as sobrescrevendo não?
Eu não sei como funciona em C, mas...

Você cria as de controle aqui.

printf("\t\tCadastre-se");
printf("\n\nlogin :");scanf("%s",log);
printf("\nsenha :");scanf("%d",&senh);


E você as sobrescreve aqui, quando o usuário digita novamente

printf("\n\nPara entrar no programa digite o login e a senha");
printf("\n\nlogin :");scanf("%s",log);
printf("\nsenha :");scanf("%d",&senh);


Daí você não pode compará-las aqui:


if (log!=log){
printf("login invalido !");}
if(senh!=senh){
printf("senha invalida !");}


Acho que é isso.

(Me corrijam se eu estiver errada)


4. Re: o que tem de errado nesse programa [RESOLVIDO]

wellington
wellingtonsr

(usa Slackware)

Enviado em 20/09/2012 - 13:40h

meldenne escreveu:

Variáveis, você não está as sobrescrevendo não?
Eu não sei como funciona em C, mas...

Você cria as de controle aqui.

printf("\t\tCadastre-se");
printf("\n\nlogin :");scanf("%s",log);
printf("\nsenha :");scanf("%d",&senh);


E você as sobrescreve aqui, quando o usuário digita novamente

printf("\n\nPara entrar no programa digite o login e a senha");
printf("\n\nlogin :");scanf("%s",log);
printf("\nsenha :");scanf("%d",&senh);


Daí você não pode compará-las aqui:


if (log!=log){
printf("login invalido !");}
if(senh!=senh){
printf("senha invalida !");}


Acho que é isso.

(Me corrijam se eu estiver errada)




É isso. Você cria as de controle e na hora de entrar no sistema as de controle são sobrescritas. Daí você compara elas com elas mesmas. Você tem criar outras variávei para serem comparadas com as do cadastro

variáveis de Cadastro:

log e senh

variáveis de entrar no sistema:

entLog e entSenh (só uma sujestão)




5. Re: o que tem de errado nesse programa [RESOLVIDO]

Victocha
Victocha

(usa Ubuntu)

Enviado em 20/09/2012 - 13:41h

Exatamente o que a amiga aqui falou, você está sobrescrevendo as variáveis, tente criar outras para armazenar os valores cadastrados(Permanentes) e outra para os valores temporários, ou armazene emposições diferentes no vetor.Aí é só compará-las e pronto.




6. Re: o que tem de errado nesse programa [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 20/09/2012 - 15:51h

Ao corrigir o erro crasso exposto pela nossa colega, acima, lembre-se de que, em C, a comparação entre strings não é feita com os operadores de comparação usados para os tipos nativos, tais como ==, !=, > etc., mas por meio da função strcmp().


7. Re: o que tem de errado nesse programa [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 20/09/2012 - 17:37h

paulo1205 escreveu:

Ao corrigir o erro crasso exposto pela nossa colega, acima, lembre-se de que, em C, a comparação entre strings não é feita com os operadores de comparação usados para os tipos nativos, tais como ==, !=, > etc., mas por meio da função strcmp().


Lembre-se também que no Linux não tem o comando 'cls', isso é comando win, portanto não pode ser usado no Linux. Outra coisa é a função getch(), que no Linux é gatchar().


8. Re: o que tem de errado nesse programa [RESOLVIDO]

wellington
wellingtonsr

(usa Slackware)

Enviado em 20/09/2012 - 17:55h

rei_astro escreveu:

paulo1205 escreveu:

Ao corrigir o erro crasso exposto pela nossa colega, acima, lembre-se de que, em C, a comparação entre strings não é feita com os operadores de comparação usados para os tipos nativos, tais como ==, !=, > etc., mas por meio da função strcmp().


Lembre-se também que no Linux não tem o comando 'cls', isso é comando win, portanto não pode ser usado no Linux. Outra coisa é a função getch(), que no Linux é gatchar().


É. e no lugar do "cls" você usa o "clear"



9. Re: o que tem de errado nesse programa [RESOLVIDO]

crashPh4nton
jhonyjhous

(usa Debian)

Enviado em 20/09/2012 - 17:59h

eu estou desenvolvendo no windows , e como fasso comparação de strings ? tipo na condição if( ....)


10. Re: o que tem de errado nesse programa [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 20/09/2012 - 19:40h

Mais do que isso: se o retorno for negativo, a primeira string é "alfabeticamente" menor do que a segunda; se for positivo, é o contrário; e zero se foram idênticas.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts