Ввод пароля в консоль

Тема в разделе "LANGS.C", создана пользователем ormoulu, 4 май 2011.

  1. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Существует ли аналог scanf'а для ввода строки, которая не должна отображаться в консоли? Например, чтобы вместо символов были звездочки (как в виндоуз), или символы вообще не отображались (как в runas).
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    В чем проблема сделать такое самому?
    Ожидаешь ввод getch - он работает без эха. Получил символ, отобразил звездочку или ничего не отобразил. И так столько, сколько нужно раз (пока не нажат Enter например). Это вот самый простейший вариант.
     
  3. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    ormoulu
    Может так примерно ...
    Код (Text):
    1. INPUT_RECORD buff[128];
    2.  
    3. while (1)
    4. {
    5.   ReadConsoleInput(hStdin,buff,128,&num_of_Read);
    6.         for(i=0;i<num_of_Read;i++)
    7.         {
    8.             switch(buff[i].EventType)
    9.             {
    10.                 case KEY_EVENT:
    11.             {
    12.              Ascii_Ch = buff[i].Event.KeyEvent.uChar.AsciiChar;
    13.             // Анализируешь и запоминаешь
    14.             // Перемещаешь курсор
    15.             // Ставишь "#"      
    16.                     }
    17.                        default:
    18.             break;
    19.     }
    20. }
     
  4. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Лень :) Вдруг все уже украдено до нас.
    TermoSINteZ, _sheva740, спасибо.
     
  5. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    не отображать эхо и все
     
  6. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Это как?
     
  7. Vitali

    Vitali Vitali

    Публикаций:
    0
    Регистрация:
    3 дек 2010
    Сообщения:
    1
    Адрес:
    Ukraine
    Код (Text):
    1. #include <Windows.h>
    2. #include <stdio.h>
    3. #include <tchar.h>
    4.  
    5. INT _tmain(INT iCnt, PTSTR pszCmd[])
    6. {
    7.     TCHAR szPwd[128] = _T("");
    8.     _tprintf_s(_T("Password: "));
    9.  
    10.     for(WORD wI = 0; wI < 128 && !GetAsyncKeyState(VK_RETURN); wI++)
    11.     {
    12.         szPwd[wI] = _getwch();
    13.         _tprintf_s(_T("*"));
    14.     }
    15.  
    16.     _tprintf_s(_T("\nYour password is %s\n"), szPwd);
    17.     _tsystem(_T("pause"));
    18.  
    19.     return 0;
    20. }