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


Автор: Alca 19.11.2008, 12:38
Ввод текста в консольное окно (с клавы), надо чтоб не отображался текст. 
Вроде как в Линуксе вводятся пароли в консоли.

Автор: DareDevil225 19.11.2008, 14:16
может так?
Код

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

int main(int argc, char* argv[])
{
    int letter;
    AnsiString pass;

    printf("Password: ");

    do {
        letter = getch ( );
        pass += (char)(letter);
      }    
              while (letter != '\r');
      printf("\n%s\n",pass);
      getchar();
    return 0;
}

Автор: Annihilator 19.11.2008, 14:17
Что-нибудь типа
Код

char s[80];
int i=0;

while (char ch!= <код_клавиши_Enter>)
{
    ch = getch();    
   if (ch!=<код_клавиши_Enter>) 
   s[i++] = ch;
else s[i++]='\0';
}


Автор: Alca 19.11.2008, 14:37
Спасибо, помогло. Вот слегка подрихтовал:
Код

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

int main(int argc, char* argv[]) {
    char chLetter;
    std::string pass;

    printf("Password: ");

    do {
        chLetter = getch( );
        
        if (0x8 == chLetter) {    //backspace
            pass.erase(pass.size() - 1);
        } else {
            pass.push_back(chLetter);
        }
    }    
    while (chLetter != '\r');

    printf("\n%s\n", pass.c_str());
    getchar();

    return 0;
}

Автор: vinter 19.11.2008, 18:25
непереносимый билдерокод smile

Автор: warmonger_ 19.11.2008, 18:29
Цитата(vinter @  19.11.2008,  17:25 Найти цитируемый пост)
непереносимый билдерокод smile 

а как сделать переносимый, без всяких конио?

Автор: vinter 19.11.2008, 18:31
warmonger_, ну если под винду, то одна мысль6 хук клавы, мультиплатформенно, я думаю, никак.

Автор: Alca 19.11.2008, 18:37
vinter, засвети код с хуком

Автор: warmonger_ 19.11.2008, 18:40
Цитата(vinter @  19.11.2008,  17:31 Найти цитируемый пост)
ну если под винду, то одна мысль6 хук клавы, мультиплатформенно, я думаю, никак. 

а если под линукс?

Автор: vinter 19.11.2008, 20:57
Цитата(Alca @  19.11.2008,  19:37 Найти цитируемый пост)
vinter, засвети код с хуком

вопрос в секцию WinaPI, сейчас я не в состоянии smile

Цитата(warmonger_ @  19.11.2008,  19:40 Найти цитируемый пост)
а если под линукс?

под линукс я не умею smile но думаю идея такая же, терминалы всюду похожи.

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