Localhost Posted October 17, 2009 at 02:11 PM Report Share #292057 Posted October 17, 2009 at 02:11 PM Olá pessoal, cá estou eu mais uma vez para pedir ajuda 😛 É assim, estou aqui num mini projecto que comecei e agora preciso de uma coisa: Como, ao escrever-se no console, transformar-se as letras em asteriscos ou algo assim parecido? Não estou mesmo a ver... Eu já implementei um mini sistema de password, so falta mesmo isso... Abraços a todos 😛 here since 2009 Link to comment Share on other sites More sharing options...
Baderous Posted October 17, 2009 at 02:20 PM Report Share #292060 Posted October 17, 2009 at 02:20 PM Se estiveres em Linux podes usar a função getpass(): http://www.gnu.org/s/libc/manual/html_node/getpass.html Ela não mostra os asteriscos, para isso tens de mexer no código da função para os mostrar de cada vez que é lido um caracter. Se for em Windows, podes usar as funções getch() e putch(): http://cboard.cprogramming.com/c-programming/108706-password-asterisk.html http://www.cplusplus.com/forum/general/3570/ Link to comment Share on other sites More sharing options...
Localhost Posted October 17, 2009 at 02:27 PM Author Report Share #292063 Posted October 17, 2009 at 02:27 PM Obrigado mas fiquei na mesma, tipo, eu ja tinha pensado nessas funçoes e ate ja tentei utilizar a getch() mas quando a uso mal digito uma tecla o programa fecha 😛 here since 2009 Link to comment Share on other sites More sharing options...
bruno1234 Posted October 17, 2009 at 02:30 PM Report Share #292064 Posted October 17, 2009 at 02:30 PM Tens q fazer isso do getch e putch dentro de um while até encontrares '\n', q é qd o utilizador carrega no enter. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
Localhost Posted October 17, 2009 at 02:44 PM Author Report Share #292069 Posted October 17, 2009 at 02:44 PM Bruno1234 ja tentei nao funciona e percebo porquê, simplesmente porque o meu programa nao é só essa new line que tem, tem muitas delas portanto acho que so da manualmente 😛 here since 2009 Link to comment Share on other sites More sharing options...
lufinima Posted October 17, 2009 at 09:12 PM Report Share #292121 Posted October 17, 2009 at 09:12 PM char *LerPass(char *pass) { int i; char ch; for(i=0;i<(MAX_PASS-1);i++) { ch=getch(); if(ch == '\b') { if(i > 0) { pass[i--]=NCHR; i--; putchar(ch); printf(" \b"); }else putchar(NCHR); } else if(ch == '\032') { printf("Nao pode Conter Espacos"); break; } else if(ch == '\r') break; else { pass[i]=ch; putchar('*'); } } pass[i]=NCHR; return pass; } Tens aqui o que tu queres já tinha implementado isto à uns anos. Não tem comentários, mas também não é difícil de perceber ficas com esse trabalho para ti Link to comment Share on other sites More sharing options...
zecapistolas Posted October 18, 2009 at 11:07 AM Report Share #292155 Posted October 18, 2009 at 11:07 AM Se estiveres em Linux podes usar a função getpass(): http://www.gnu.org/s/libc/manual/html_node/getpass.html Nesse exemplo mostra como desabilitar a escrita na consola, ler a password e depois voltar a habilitar a escrita na consola.... E eu preciso disso num trabalho que estou a fazer.... Por isso já preparei um pequeno exemplo para testar.... #include <termios.h> #include <stdio.h> /* Variaveis */ struct termios old, new; /* Turn echoing off and fail if we can't */ int desligarTerminal(FILE *stream) { if (tcgetattr (fileno (stream), &old) != 0) return -1; new = old; new.c_lflag &= ~ECHO; if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0) return -1; return 0; } /* Restore terminal */ void ligarTerminal(FILE *stream) { (void) tcsetattr (fileno (stream), TCSAFLUSH, &old); } int main (int argc, char *argv[]) { int d = desligarTerminal(); char text[40]; scanf("%s", text); int l = ligarTerminal(); printf("Introduziu: %s\n", text); return 0; } Mas não estou a entender o que devo colocar no parâmetro "FILE *stream".... cumps 😛 Link to comment Share on other sites More sharing options...
Localhost Posted October 18, 2009 at 11:10 AM Author Report Share #292156 Posted October 18, 2009 at 11:10 AM Obrigado, vou já implementar eheheh Mas para a próxima não me dês logo ok? Sabes, eu adoro pensar, podias dar pistas ou ajudar mas não dar logo o code mas não estou a ser mal agradecido e aprecio a tua ajuda mas para a próxima tenta fazer isso 😛 Abraços here since 2009 Link to comment Share on other sites More sharing options...
zecapistolas Posted October 18, 2009 at 11:30 AM Report Share #292161 Posted October 18, 2009 at 11:30 AM óh ?, o parâmetro "FILE *stream" é "stdout", claro..... cumps 👍 Link to comment Share on other sites More sharing options...
lufinima Posted October 19, 2009 at 07:13 PM Report Share #292403 Posted October 19, 2009 at 07:13 PM Obrigado, vou já implementar eheheh Mas para a próxima não me dês logo ok? Sabes, eu adoro pensar, podias dar pistas ou ajudar mas não dar logo o code mas não estou a ser mal agradecido e aprecio a tua ajuda mas para a próxima tenta fazer isso 😁 Abraços Sim eu sei, eu tambem gosto de deixar o pessoal pensar um pouco, mas tava com pouco paciencia Link to comment Share on other sites More sharing options...
Localhost Posted October 21, 2009 at 11:06 AM Author Report Share #292673 Posted October 21, 2009 at 11:06 AM Ok, obrigado 😛 here since 2009 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now