Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/27: Рейтинг темы: голосов - 27, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 26
1

Замена символов при вводе пароля

29.02.2012, 00:22. Показов 5670. Ответов 8
Метки нет (Все метки)

Опять же я с глупыми вопросами как можно сделать или может есть кака я то функция
что при вводе пароля эти символы оттображаются как *
если не трудно пример вот на этом коде
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <conio.h>
void main()
{
         setlocale(LC_ALL, "Russian");
         char login[256], password[256];
         char ch_login[256], ch_password[256];
         int found=0,i=0;
         printf("Введите логин: \n");
         scanf("%s",login);
         printf("Введите пароль: \n");
         scanf("%s",password);
         FILE * fp = fopen("users.txt", "r");
         while(!feof(fp))
        {
                fscanf(fp,"%s", ch_login);
                fscanf(fp,"%s", ch_password);
                strrev(ch_password);
                if(strcmp(login,ch_login)==0
                   && strcmp(password,ch_password)==0)
                {
                        found++;
                        break;
                }
                i++;
        }
        if(found!=0)
                printf("Вы вошли как: %s",ch_login);
        else
                printf("Вы ввели неверный логин или пароль");
        getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.02.2012, 00:22
Ответы с готовыми решениями:

Скрыть символы в консоли при вводе пароля
Мне нужно ввести пароль таким образом(все через консоль): если пользователь нажимаешь какую-нибудь...

Не работает считывание символов при вводе
#include &lt;stdio.h&gt; int main () { long nc; nc = 0; while (getchar() != EOF) ++nc;...

Замена символов при вводе
Здравствуйте! копирую цифры из 1С в Excel, а они с пробелами как удалять пробел при изменении...

Замена символов вводимого пароля звездочками
Вот исходный код программы.Мне нужно чтобы когда пользователь вводил пароль эта строка визуально...

8
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
29.02.2012, 00:56 2
Ничего хитрее что-то не выдумывается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char ch='s';
    string str;
    while(ch!= код_символа_для_выхода)
    {
        ch=getch();
        str+=ch;
        system("cls");
        for(int i=0;i<str.length();i++)
         cout<<'*';
    }
}
Добавлено через 1 минуту
В моём методе только же будет каждый раз очистка экрана всего, тоесть пока будет ввода пароля экран каждый раз будет чиститься, также getch() пофиг на то что это за клавиша, будь то символ a или кнопка F12 так что эти варианты нужно проработать отбрасывая их или ещё как (по желанию уже).
0
3080 / 2401 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
29.02.2012, 09:03 3
Со звездочкой не скажу, а вот без звездочки в conio для считывания пароля есть функция getpass, которая просто не выводит на экран набираемый текст.
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 26
29.02.2012, 11:48  [ТС] 4
а нужно именно со звездочками
0
62 / 61 / 6
Регистрация: 02.09.2008
Сообщений: 181
29.02.2012, 17:10 5
Может, сделать вот так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    HANDLE hStdout, hStdin;
    CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
    WORD wOldColorAttrs;
 
    // Получим дескрипторы для STDIN и STDOUT.
    hStdin = GetStdHandle(STD_INPUT_HANDLE);
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    if (hStdin == INVALID_HANDLE_VALUE || hStdout == INVALID_HANDLE_VALUE)
        return 0;
 
    // Сохраним текущий цвет текста.
    GetConsoleScreenBufferInfo(hStdout, &csbiInfo);  
    wOldColorAttrs = csbiInfo.wAttributes;  
    char ch;
    char *note = "ENTER PASSWORD >";
    string str;
    COORD p1={30,5}, p2={p1.X + strlen(note),7 };
    SetConsoleTextAttribute(hStdout, wOldColorAttrs);
    SetConsoleCursorPosition(hStdout, p1);
    cout<<note;
    do
    {            
        // Установим атрибуты текста которые пишут черный текст по черному фону.
        SetConsoleTextAttribute(hStdout, 0x0000);
        ch=_getch();
        if(ch==13) //если нажали клавишу ENTER 
            break;    
        // Установим атрибуты текста которые пишут красный текст по черному фону.
        SetConsoleTextAttribute(hStdout, FOREGROUND_RED|FOREGROUND_INTENSITY);
        cout<<'*';
        str+=ch;
    }while(ch!= 23);
 
    SetConsoleTextAttribute(hStdout, wOldColorAttrs);
    SetConsoleCursorPosition(hStdout, p2);
    for(unsigned int i=0; i<str.length();i++)
        cout<<str[i];
    cout<<endl;
    
}



Добавлено через 9 минут
C++
1
while(ch!= 23);
что-то это не работает :-)
Но принцип я думаю понятен.
0
19 / 19 / 13
Регистрация: 22.11.2011
Сообщений: 101
29.02.2012, 21:16 6
ENERGYxdre, не знаю сделал ли ты чтобы вместо символов * выводилась или нет, но надо так делать: вводишь динамический массив, присваиваешь ему getch() и пишешь printf("*") Т.е. у меня вот как:
C
1
2
3
4
5
6
char* pass=(char*)malloc(sizeof(char)*255);
 
    for(int i=0;i<254;i++)
    {
    pass[i]=_getch();
    printf("*");
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 26
01.03.2012, 01:50  [ТС] 7
Цитата Сообщение от Evgen2sat Посмотреть сообщение
ENERGYxdre, не знаю сделал ли ты чтобы вместо символов * выводилась или нет, но надо так делать: вводишь динамический массив, присваиваешь ему getch() и пишешь printf("*") Т.е. у меня вот как:
C
1
2
3
4
5
6
char* pass=(char*)malloc(sizeof(char)*255);
 
    for(int i=0;i<254;i++)
    {
    pass[i]=_getch();
    printf("*");


for(int i=0;i<254;i++)


это получается надо ввести 254 символа, вот что туда подставить
0
Заблокирован
Автор FAQ
01.03.2012, 02:19 8
ENERGYxdre, лично мне по душе вот такой простецкий вариант
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <conio.h>
 
int main()
{
    long n         = 0;
    char passw[32] = {0};
    while((passw[n] = getch()) != '\r' && (n = n + 1))
        printf("%c",'*');
    printf("\nYour password : %s\n",passw);
    printf("Press anykey to continue\n");
    getch();
    return 0;
}
1
Миниатюры
Замена символов при вводе пароля  
19 / 19 / 13
Регистрация: 22.11.2011
Сообщений: 101
01.03.2012, 11:10 9
ENERGYxdre, главное вот эта строка:
C
1
2
pass[i]=_getch();
                                                             printf("*");
Для ввода пароля ты ведь используешь массив, и вот в цикле своему массиву присвой _getch(), это задержка нажатий, т.е. ты нажимаешь клавишу, она вводится но на консоле ничего не показывается.

for(int i=0;i<254;i++)


это получается надо ввести 254 символа, вот что туда подставить
я просто объявил массив из 255 символов, он служит для ввода пароля
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2012, 11:10

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Отображение пароля звездочками при вводе
string password = &quot;НИКИТА1257&quot;, input = string.Empty; Console.Write(&quot;Введите пароль...

При вводе пароля заменить символы на ****
Такой вопрос, у меня есть форма в которой есть textBox, для ввода пароля. Как сделать чтобы при...

НЕ пускает при вводе логина и пароля
Такая ситуация: есть основной домен и сабдомен, на основном сайт и в нем в папке forum находится...

Num Lock при вводе пароля
Я использую цифровые пароли, так как их удобнее набирать - с боковой клавиатуры. Но при входе в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.