Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > всё что вводится в консоли


Автор: toader 30.6.2009, 12:39
можно ли такое сделать?и как можно такое сделать/


мне нужно именно в "ganymede - C/C++ eclipse" сделать так чтобы то что я буду водить в консоле не отоброжалоси зелёным шрифтом а как пароли  

Автор: zim22 30.6.2009, 12:44
Цитата(toader @  30.6.2009,  12:39 Найти цитируемый пост)
можно ли такое сделать?и как можно такое сделать/

можно.
используя фунцию getch()
http://forum.vingrad.ru/index.php?showtopic=262941&view=findpost&p=1893730

Автор: toader 30.6.2009, 12:49
можно хоти намёк как тема назеваласи?

Добавлено через 2 минуты и 54 секунды
всё нашол))

Добавлено через 11 минут и 8 секунд
я нашол но это не то.. мне нужно просто чтобы то что я буду писать в консоле отображаласи там звёздочками \(**) а не симбалами

Добавлено через 12 минут и 16 секунд
а нет вижу добавили сылку это другое спасибо я посмотрю я смотрел тут)))
http://forum.vingrad.ru/forum/topic-263860/

Автор: toader 30.6.2009, 13:06
как написать это?

Цитата



Код
#include <conio.h>
...
ch = _getch();


почему бы не избавиться от архаичного conio.h и не использовать вместо него istream::get()
 

smile 




Автор: andrew_121 30.6.2009, 13:23
toader, Вводишь символ, считываешь его в буфер, считаешь длину введенных символов, выводишь в консоль символ '\r', потом звездочек столько, сколько символов в буфере, потом опять читаешь символ. И так по кругу.
Щас попробую. По моему правильно.

Автор: zim22 30.6.2009, 13:28
Цитата(toader @  30.6.2009,  13:06 Найти цитируемый пост)
как написать это?

всмысле? пальцами рук набрать на клавиатуре. smile

Автор: andrew_121 30.6.2009, 13:34
Код


#include <conio.h>
#include <string>

int main(int argc, const char **argv) {

    std::string buf;
    std::string::iterator it;

    char ch = getch();
    while ( ch != 13 ) {
        buf += ch;
        putc('\r', stdout);
        for ( it = buf.begin(); it != buf.end(); it++ ) {
            putc('*', stdout);
        }
        putc('\r', stdout);
        /*  */
        ch = getch();
    }
    
    printf("You entered - %s\n", buf.c_str());

    return 0;
}




Добавлено через 50 секунд
Цитата(zim22 @  30.6.2009,  13:28 Найти цитируемый пост)
пальцами рук набрать на клавиатуре. smile 

Шутник однако smile 

Автор: toader 30.6.2009, 13:42
Код

#include <iostream>
#include <string>
using namespace std;
int main(){
   string pass ="";
   char ch;
   cout << "Enter pass\n";
   ch = cin.get();
   while(ch != 13)
   {
      pass.push_back(ch);
      cout << '*';
      ch = cin.get();
   }
   if(pass == "gosn1ck"){
      cout << "\nAccess granted :P\n";
   }else{
      cout << "\nAccess aborted...\n";
   }
}


да вот работает но он после введёнова показевает звёздочки((.. мне нужно чтобы то что я вожу в консоли не показевалоси символами а ***





andrew_121,  я на линуксе у меня нет Конио(

Автор: azesmcar 30.6.2009, 14:06
toader

В линуксе для этого есть специальная функция http://linux.die.net/man/3/getpass.
Звездочек она не выводит, да и не надо в принципе. Ввод пароля скрывает - ну и ладно.

Автор: andrew_121 30.6.2009, 14:07
toader, Странный ты человек smile 
http://www.gnu.org/s/libc/manual/html_node/getpass.html

Добавлено через 5 минут и 10 секунд
И речь твоя не понятна. Вечно догадываться приходится.
Ты про google.translate.com слышал? Переводи на русский там!

Автор: zim22 30.6.2009, 14:49
 smile 
Цитата(andrew_121 @  30.6.2009,  14:07 Найти цитируемый пост)
И речь твоя не понятна. Вечно догадываться приходится.

Цитата(zim22 @  24.6.2009,  13:22 Найти цитируемый пост)
у вас кривой русский - вы китаец по национальности?

Цитата(toader @  24.6.2009,  13:28 Найти цитируемый пост)
я русский сам случайно выучил не хотя ^^ кагбы сам привязался единственно чему учился это русским буквам)) и то транслитом пишу и перевожу в русские символы ^^ у меня проблема с объяснением мыслей тоисть у меня они правелино сложены но когда объясняю не правелино сложены))) 

Автор: andrew_121 30.6.2009, 16:10
zim22, Опять нихера не понял smile 

Автор: zim22 30.6.2009, 19:48
 smile 
Цитата(andrew_121 @  30.6.2009,  16:10 Найти цитируемый пост)
Опять нихера не понял

я привёл цитаты того, как я выяснял у toader его национальность smile
его ответ я тоже не понял smile

Автор: andrew_121 30.6.2009, 23:24
Цитата(zim22 @  30.6.2009,  19:48 Найти цитируемый пост)
я привёл цитаты того, как я выяснял у toader его национальность

Из цитаты не понятно какая у него национальность. Только понял что не русская)

Автор: triclosan 30.6.2009, 23:31
Цитата(azesmcar @  30.6.2009,  14:06 Найти цитируемый пост)
Звездочек она не выводит, да и не надо в принципе. Ввод пароля скрывает - ну и ладно. 

Так секьюрнее, чем со звездочками

Автор: azesmcar 30.6.2009, 23:42
Цитата(triclosan @  30.6.2009,  23:31 Найти цитируемый пост)
Так секьюрнее, чем со звездочками

Я имел ввиду то, что задаче не полностью соответствует.. но проблему решает.
И в чем же секьюрность заключается?

Автор: Rififi 30.6.2009, 23:53
И в чем же секьюрность заключается?
ты кролика видишь? не видишь. а он есть smile

Автор: toader 1.7.2009, 14:49
мне нужно именно в "ganymede - C/C++ eclipse" сделать так чтобы то что я буду водить в консоле не отоброжалоси зелёным шрифтом а как пароли 

Автор: toader 3.7.2009, 13:31
ну вот я изменил но он остался таким же как ис cin.getch


Код

#include <iostream>
#include <string>
using namespace std;

int main(int argc, const char **argv) {
    std::string buf;
    std::string::iterator it;
    char ch = 0;
    while ( ch != 13 ) {
        buf += ch;
        putc('\r', stdout);
        for ( it = buf.begin(); it != buf.end(); it++ ) {
            putc('*', stdout);
        }
        putc('\r', stdout);
        /*  */
        ch = getchar();
    }

    printf("You entered - %s\n", buf.c_str());
    return 0;
}




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)