Ir ao conteúdo

Posts recomendados

Postado

Boa tarde estou com um problema na minha tela de login, o erro e seguinte coloquei o asterisco pra esconder a senha, mais supondo que errei a digitação e tento corrigir  o asterisco , ele nao apaga ou seja nao consigo corrigi o que deve fazer para que consigo apagar o asterisco e digitar novamente 

 


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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main() {

        int in=0,l=10,s=10,i=0,verifica_senha=0;
        char c,log[20],senha[20],op;


while(verifica_senha==0){
        printf(" Login: ");
            gets(log);
                printf("\n Senha: ");
        while((c=getch())!=13){ 
    senha=c;
            i++;
    printf("*");     
        }
            senha='\0';
                   i=0;
                    system("cls");
                l= strcmp(log,"adm");
        s= strcmp(senha,"1234567"); 
    if(s==0&&l==0){
        printf("SENHA CORRETA BEM VINDO AO SISTEMA ");system("color 0a");verifica_senha=1;Beep(1500,500);
    }else{
        printf("LOGIN OU SENHA INCORRETA TENTE NOVAMENTE\n",senha);
        system("color 0c");Beep(1000,500);
        system("pause");
        }    
        printf("\n");
        system("cls");
    }
    return 0;
}

 

  • Amei 1
Postado

@yuri_carneiro     seu código está bom , mas você não colocou as bibliotecas necessárias  e então seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define u GetStdHandle(STD_OUTPUT_HANDLE)
#define textcolor_2(l,f) SetConsoleTextAttribute(u,l+(f<<4));
#define gotoxy_2(x,y) {COORD c={x,y};SetConsoleCursorPosition(u,c);}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main() {
    int in=0,l=10,s=10,i,verifica_senha=0;
    char c,log[20],senha[20],op;
    while(verifica_senha == 0){
        i=0;
        textcolor_2(14,0);
        printf(" Login : ");
        gets(log);
        printf("\n Senha: ");
        while((c=getch())!=13){
            if((int)c==8 ){
                //gotoxy_2(40,5);printf("%d",i);getch();
                if(i>0){
                    i--;
                    printf("\b \b");
                }
            }
            else{
                senha[i]=c;
                i++;
                printf("*");
            }
        }
        senha[i]='\0';
        l= strcmp(log,"adm");
        s= strcmp(senha,"1234567");
        if(s==0&&l==0){
            textcolor_2(10,12);
            printf("\n\n  SENHA CORRETA BEM VINDO AO SISTEMA  ");
            textcolor_2(10,12);
            verifica_senha=1;
            Beep(1500,500);
            Sleep(1000);
        }
        else{
            textcolor_2(12,15);
            printf("\n\n  LOGIN OU SENHA INCORRETA TENTE NOVAMENTE  \n\n\n",senha);
            Beep(1000,500);
            system("pause");
        }
        textcolor_2(14,0);
        system("cls");
    }
    gotoxy_2(10,10);
    printf("Saindo . . . !\n\n\n");
    Sleep(2000);
    return 0;
}

 

  • Curtir 1
Postado

 meu caro colega  @devair1010  sim entedi como melhora mais, o meu principal problema ainda persiste  e não consigo apagar o que escrevo no are de senha por exemplo o que digito não consigo corrigir, como faço pra colar essa funçao 

  • Amei 1
Postado

@yuri_carneiro    você pode usar aquela função que está lá emcima do código em #define gotoxy , que move o cursor para a posição desejada e assim ele pode voltar para a posição anterior e ali imprimir um caractere espaço , cujo código ASCII é 32 , em cima do asterisco apagando ele da tela , assim você deleta aquele asterisco ,  e decrementa o valor da variável  i  , pois voltou uma posição também na variável  senha . ou também você pode usar o código do compilador " \b  "  que retrocede o cursor em uma coluna  e depois faz também aquele procedimento na variável  .

Postado

@devair1010  nao conseguir compreender sou meio novo no c kkk poderia me ajudar melhor se nao te incomodar  

adicionado 4 minutos depois
3 minutos atrás, yuri_carneiro disse:

@devair1010  nao conseguir compreender sou meio novo no c kkk poderia me ajudar melhor se nao te incomodar  

@devair1010e nao entedi sua explicaçao podereia ser mais especifico 

  • Obrigado 1
Postado
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define BACKSPACE 8
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

    static char buffer[128];
    int in=0,l=10,s=10,i=0,verifica_senha=0;
    char c,log[20],senha[20],op,letra = '[COLOR="Blue"][B]\0[/B][/COLOR]';
    int main() {
    	 while ((i<127) && (letra!= '\r')) {
        letra = getch();
        if ( letra == BACKSPACE ) {
            if ( i > 0 ) {
                buffer[--i]= '[COLOR="Blue"][B]\0[/B][/COLOR]';
                putchar (BACKSPACE);
                putchar (' ');
                putchar (BACKSPACE);
            } else
                putchar('[COLOR="Blue"][B]\a[/B][/COLOR]');
        } else if (letra != '\r') {
            buffer[i++]=letra;
            putchar('*');
        }
    }
        printf(" Login : ");
        gets(log);
        printf("\n Senha: ");
        while((c=getch())!=13){ 
            senha[i]=c;
            i++;
            printf("*");     
        }
        senha[i]='\0';
        i=0;
        l= strcmp(log,"adm");
        s= strcmp(senha,"1234567"); 
        if(s==0&&l==0){
            printf("\n\n  SENHA CORRETA BEM VINDO AO SISTEMA  ");
            verifica_senha=1;
            Beep(1500,500);
            Sleep(1000);
        }
        else{
            printf("\n\n  LOGIN OU SENHA INCORRETA TENTE NOVAMENTE  \n\n\n",senha);
            Beep(1000,500);
            system("pause");
        }  

 

  • Curtir 1
Postado

@yuri_carneiro    no hora que você digita os caracteres da senha eles vão sendo inseridos na variável senha um a um , e   a variável  i  está sendo usada para informar em qual posição da string ou vetor de char ,   assim para deletar um caractere à esquerda ,  você verifica o teclado para saber se pressionou a tecla backspace , por exemplo ou outra tecla qualquer ,  e ai dentro desse if volte uma posição , ou coluna , na tela usando o "\b"   e delete o caractere e decremente o valor de i .    assim     :

if((int)c == 8){          /* se pressionou a tecla backspace                        */
    if(i > 0){            /* se ainda houver algum caractere na string              */
        i--;              /* decrementa a variável  i voltando uma posição no vetor */
        printf("\b \b");  /* isso apaga um asterisco que está a esquerda            */
    }
}
else{
    senha[i] = c;         /* insere o caractere na string                           */
    i++;                  /* incrementa a variável  i                               */
    printf("*");
}

 

  • Curtir 1
Postado

@devair1010 entedi a logica mais porém nao funciona 

adicionado 9 minutos depois

@Herbertbahia entao meu amigo obrigado funciono, mais notei um erro interessante, quando apagamos sem ter nada escrito ele assumi ] ou seja ele asume um valor que nao pode ser apagado, teria como resolver isso ?

 

  • Curtir 1
Postado

@KXSY  Entao meu amigo com ajuda do pessoal conseguir fazer roda  mais, se você testa ai vera que quando apago agora se nao tiver nada digitado ele assume o ] e esse nao consigo apagar vou colcar o coido pra ver se você consegue me ajudar 

 

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define BACKSPACE 8
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

    static char buffer[128];
    int in=0,l=10,s=10,i=0,verifica_senha=0;
    char c,log[20],senha[20],op,letra = '[COLOR="Blue"][B]\0[/B][/COLOR]';
    int main() {
        
        
        
        
        printf(" Login : ");
        gets(log);
        printf("\n Senha: ");
        while((c=getch())!=13){ 
          senha[i]=c;
            i++;
            printf("*");          
                  while ((i<127) && (letra!= '\r')) {
        letra = getch();
        if ( letra == BACKSPACE ) {
            if ( i > 0 ) {
                buffer[--i]= '[COLOR="Blue"][B]\0[/B][/COLOR]';
                putchar (BACKSPACE);
                putchar (' ');
                putchar (BACKSPACE);
            } else
                putchar('[COLOR="Blue"][B]\a[/B][/COLOR]');
        } else if (letra != '\r') {
            buffer[i++]=letra;
            putchar('*');
        }
    }          

}
        senha[i]='\0';
        i=0;
        l= strcmp(log,"adm");
        s= strcmp(senha,"1234567"); 
        if(s==0&&l==0){
            printf("\n\n  SENHA CORRETA BEM VINDO AO SISTEMA  ");
            verifica_senha=1;
            Beep(1500,500);
            Sleep(1000);
        }
        else{
            printf("\n\n  LOGIN OU SENHA INCORRETA TENTE NOVAMENTE  \n\n\n",senha);
            Beep(1000,500);
            system("pause");
        }
}

 

  • Curtir 1
Postado

@KXSY eu uso o  Dev-C++5.11 , a linguem desse programa em c, sim eu vi que o que você postou funciona 

adicionado 0 minutos depois

@KXSY mais você nao teria um dica de como resolver o problema do ] 

adicionado 6 minutos depois

@Herbertbahia da forma que você me encinou esta indo porém ele nao dar enter e quando eu apago, ser ter nada escrito ele assume ] como resolvo 
 

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define BACKSPACE 8


    static char buffer[128];
    int in=0,l=10,s=10,i=0,verifica_senha=0;
    char c,log[20],senha[20],op,letra;
    int main() {
        
        
        
        
        printf(" Login : ");
        gets(log);
        printf("\n Senha: ");
        while((c=getch())!=13){ 
          senha[i]=c;
            i++;
            printf("*");          
                  while ((i<127) && (letra!= '\r')) {
        letra = getch();
        if ( letra == BACKSPACE ) {
            if ( i > 0 ) {
                buffer[--i]= '[COLOR="Blue"][B]\0[/B][/COLOR]';
                putchar (BACKSPACE);
                putchar (' ');
                putchar (BACKSPACE);
            } else
                putchar('[COLOR="Blue"][B]\a[/B][/COLOR]');
        } else if (letra != '\r') {
            buffer[i++]=letra;
            putchar('*');
        }
    }          

}
        senha[i]='\0';
        i=0;
        l= strcmp(log,"adm");
        s= strcmp(senha,"1234567"); 
        if(s==0&&l==0){
            printf("\n\n  SENHA CORRETA BEM VINDO AO SISTEMA  ");
            verifica_senha=1;
            Beep(1500,500);
            Sleep(1000);
        }
        else{
            printf("\n\n  LOGIN OU SENHA INCORRETA TENTE NOVAMENTE  \n\n\n",senha);
            Beep(1000,500);
            system("pause");
        }
}

 

  • Curtir 1

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!