Ir ao conteúdo

Senha com c++


lucasbaro

Posts recomendados

Postado

Sou iniciante em c++ e tenho que fazer um programa em que o usuario insere uma senha, ai o programa ve se ela e de 1 a 20 e ai outra pessoa tenta adivinhar a senha. Ate ai consegui fazer fácil o problema e que quando o usuario insere a senha tem que aparecer asterisco ** ao invés da senha digitada. Ja pesquisei em varios sites e eles falam sempre pra usar o getch, mas nenhum fala como ele deve ser usado ja tentei de diversas formas mas não consigo. Se alguem puder da uma ajuda eu agradeço.

Postado

Aê brow, dá uma olhada nesta função e tente fazer uma...


//usa getch() do header "conio.h"
int le_senha(char *msg,int tam = 10)
{
int cont = 0,pos = 0,tec;
while(tec != 13)
{
fflush(stdin);
tec = getch();
if(tec == 0x08){
std::cout<<"\x08 \x08";
if(cont>0) msg--;
}else{
std::cout<<'*';
if(cont < tam) *(msg++) = (char)tec;
cont++;
}
}
*msg = 0;
return cont;
}

Exemplo:


#include<iostream>
#include<conio.h>
int le_senha(char *msg,int tam = 10)
{
int cont = 0,pos = 0,tec;
while(tec != 13)
{
fflush(stdin);
tec = getch();
if(tec == 0x08){
std::cout<<"\x08 \x08";
if(cont>0) msg--;
}else{
std::cout<<'*';
if(cont < tam) *(msg++) = (char)tec;
cont++;
}
}
*msg = 0;
return cont;
}
int main(int argc,char *argv[])
{
char senha[15];
std::cout<<"insira a senha:\t";
le_senha(senha);
std::cout<<"\n\nsenha = "<<senha;
return 0;
}

Espero que ajude, fallou...

Postado

Muito obrigado pela ajuda mas estou com uma pequena dúvida nas seguintes partes :

int le_senha(char *msg,int tam = 10)

fflush(stdin);

std::cout<<"\x08 \x08";

if(cont < tam) *(msg++) = (char)tec;

Muito obrigado e desde ja agradeço

Postado

Brow,

."int le_senha(char *msg,int tam = 10)": a função retornará um inteiro (quantos caracteres foram lidos), o primeiro parâmetro é a string que receberá a enrada do usuário, o segundo é o número máximo de caracteres que podem ser lidos (com valor padrão 10, caso não seja especificado o segundo parametro será 10)...

."fflush(stdin);": limpa o buffer do teclado...

."std::cout<<"\x08 \x08";": quando o usuário aperta "BackSpace", volta um caractere ('\x08' código ASCII "BackSpace") escreve um caractere em branco (" ") e volta um caractere novamente...

."if(cont < tam) *(msg++) = (char)tec;": cont é a variável que representa quantos caracteres foram lidos, tam representa o número máximo de caracteres que poderão ser lidos, caso o "cont" seja menor que o "tam" adiciona o caractere lido a string...

Falou...

Arquivado

Este tópico foi arquivado e está fechado para 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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!