View Full Version : [C/C++]Nascondere caratteri inseriti
MissaW_RaZ_98
11-11-2011, 16:15
Salve a tutti
Vorrei sapere come nascondere i caratteri che inserisco nei linguaggi C/C++
Mi servirebbe per nascondere una password....
grazie :D
cirano994
11-11-2011, 16:49
Salve a tutti
Vorrei sapere come nascondere i caratteri che inserisco nei linguaggi C/C++
Mi servirebbe per nascondere una password....
grazie :D
So che non ti sarà molto d'aiuto, ma io, strano ma vero, so farlo con Assembly ma non in C. :asd:
Interesserebbe anche a me.. :D
Grazie
MissaW_RaZ_98
11-11-2011, 16:58
Bene,a questo punto siamo in due :mc:
Aspettiamo risposte....:)
clockover
11-11-2011, 16:59
Non lo so.... non ci ho mai provato... però stavo pensando... e spero di non dire cacchiate...
forse potresti provare a chiudere il flusso per lo stdout e ad ogni input di carattere (che ovviamente bufferizzerai da qualche parte) mandi un asterisco o proprio niente... quando ho un po di tempo ci provo... fammi sapere se è possibile
clockover
11-11-2011, 17:02
Non va ho fatto una prova al volo :D
int main(){
fclose(stdout);
char t = getchar();
printf("Caio %c\n", t);
return 0;
}
MissaW_RaZ_98
11-11-2011, 17:14
ah,peccato...:(
Fa niente,cambio progetto :)
clockover
11-11-2011, 17:19
Non so cosa ci devi fare ma secondo me dovresti insistere :D :D
MissaW_RaZ_98
11-11-2011, 17:30
niente...volevo solo imparare qualcosina in più col c/c++
clockover
11-11-2011, 17:31
A ok... comunque c'è una nuova pista se ti interessa ancora...
int getch(void)
ciao
MissaW_RaZ_98
11-11-2011, 17:42
ma al posto di void cosa ci devo mettere??
Scusa per questa domanda(sono un principiante in programmazione)
cirano994
11-11-2011, 17:47
Ci ho provato ma dava problemi sulla stringa di memorizzazione... :mc:
In compenso ho trovato questo funzionante :D :#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
#define MAX_LENGHT 128
#define ENTER 13
#define BACKSPACE 8
char ch;
char password[MAX_LENGHT];
const char *mypass="asilas";
int pos=0;
int main()
{
cout <<"Please enter the password:\n";
while(true)
{
ch=getch();
if(pos>=MAX_LENGHT) {cout<<'\a'; continue;} /* beep if password is too long */
if(ch==ENTER) break; /* User have pressed ENTER*/
else if(ch==BACKSPACE) /* BACKSPACE was pressed*/
{
cout <<"\b \b";
password[--pos]='\0';
}
else/* A..Z a...z BUG: I forgot what... */
{
cout <<"*";
password[pos++]=ch;
password[pos]='\0';
}
if(pos<=0) pos=0;
}
if(strcmp(password,mypass)==0) cout <<"\nCorrect password!\n";
else cout <<"\nAccess denied!\n";
cout.flush();
cin.get();
return EXIT_SUCCESS;
}
Ciao
MissaW_RaZ_98
11-11-2011, 17:58
ottimo
provo subito anch'io
MissaW_RaZ_98
11-11-2011, 18:04
funziona alla perfezione,però sto analizzando meglio il source code per capirlo bene :)
credo di averlo capito abbastanza bene....
però c'è una cosa che non capisco:cosa sono "\b" e "\a" ?
Sequenze di escape. Cerca nella documentazione C++ relativa a stringhe e caratteri...e dovrebbe venirti indicato il significato...come \n per indicare nuova riga.
Perseverance
11-11-2011, 21:17
In qualche modo è possibile farlo in maniera pulita usando la funzione kbhit() e in occorrenza della pressione di un tasto andare a leggere quale carattere è stato premuto dallo stream della tastiera.
Domani provo
Salve a tutti
Vorrei sapere come nascondere i caratteri che inserisco nei linguaggi C/C++
Mi servirebbe per nascondere una password....
grazie :D
Sistema operativo? Se Unix e simili puoi usare la funzione di libreria getpass() anche se è stata dichiarata obsoleta.
In generale quello che devi fare è disabilitare l'echoing sul terminale in uso.
ciao!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.