Форум программистов, компьютерный форум CyberForum.ru

пароль - C++

Восстановить пароль Регистрация
 
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
13.04.2011, 22:54     пароль #1
подскажите советом : я написал программу проверяющую правильность пассворда, какой код нужно дописать чтобы пассворд не зависел от регистра(то есть если я написал GOVNO, программа вывела бы hi )?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool b=false;
 char pas[]="";
int d=1;
do{cout<< "vvedite parol\n";
 cin>> pas;
 char s[]="govno";
 
 
 if (strstr(s,pas)) 
  {cout<<"hi"<<endl;
  b=true;
  break ;}
 else
 b=false;
 cout<<"Access denied!"<<endl;
d++;
 }
  while(d<4);
 
 if (!b)
 cout<<"FORBIDDEN!";
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2011, 22:54     пароль
Посмотрите здесь:

Пароль C++
C++ Пароль в c++
C++ поставить пароль на консоль
C++ Пароль
нехранимый пароль C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
13.04.2011, 22:57     пароль #2
Для сравнения пользуйтесь этим:
C++
1
int stricmp(const char *string1, const char *string2);
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
13.04.2011, 23:17  [ТС]     пароль #3
Цитата Сообщение от neske Посмотреть сообщение
Для сравнения пользуйтесь этим:
C++
1
int stricmp(const char *string1, const char *string2);
так у меня же втроая строка не константа, я ее с клавиатуры ввожу
Петррр
 Аватар для Петррр
5917 / 3354 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
13.04.2011, 23:30     пароль #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
 
int main()
{
    char pass[255];
    setlocale(LC_ALL, "");
    std::cout << "Введите пароль: ";
    std::cin >> pass;
    for(int i = 0; i < strlen(pass); i++)
        pass[i] = tolower(pass[i]);
    if (strcmp(pass, "gavno") == 0)
        std::cout << "Пароль введен верно, Вы можите продолжить работать в программе";
    _getch();
}
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
13.04.2011, 23:42  [ТС]     пароль #5
мне бы желательно с функциями преобразования строки
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
14.04.2011, 07:27     пароль #6
Петррр, зачем лишние телодвижения, stricmp сразу сравнивает без учета регистра.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.04.2011, 08:16     пароль #7
Цитата Сообщение от ahamoth Посмотреть сообщение
так у меня же втроая строка не константа, я ее с клавиатуры ввожу
Параметр, передаваемый по значению, принципиально не отличсается от локальной константы, а взять это значение не возбраняется и с переменной.
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
14.04.2011, 08:24     пароль #8
Петррр, ну, самое простое решение, это все символы перевести в верхний/нижний регистр. ну а самое правильное, это
Цитата Сообщение от neske Посмотреть сообщение
пользуйтесь этим:
int stricmp(const char *string1, const char *string2);
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
15.04.2011, 20:58  [ТС]     пароль #9
вот сделал через stricmp, теперь всегда пишет WELCOME, что неправильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool b=false;
  char s[]="loska";
char pas[5];
int d=1;
do{cout<< "vvedite parol\n";
 cin>> pas;
 
if (stricmp(s,pas)) 
  {cout<<"WELCOME"<<endl;
  b=true;
  break ;}
 else
 b=false;
 cout<<"Access denied!"<<endl;
d++;
 }
  while(d<4);
 
if (!b)
 cout<<"FORBIDDEN!\n";
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.04.2011, 21:13     пароль #10
Цитата Сообщение от neske Посмотреть сообщение
зачем лишние телодвижения, stricmp сразу сравнивает без учета регистра.
Фнукции stricmp нет в стандарте языка, и, к примеру, компилятор MinGW вообще не знает про такую функцию, я так понимаю это все заморочки мелкософта.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2011, 21:50     пароль
Еще ссылки по теме:

Поставить пароль на архив C++
C++ Логин и пароль из файла
C++ Меню логин пароль

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

Или воспользуйтесь поиском по форуму:
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
15.04.2011, 21:50     пароль #11
Еще вариант для разнообразия (с поточным вводом/выводом возиться не хотелось, так что там топорно, но вроде работает ) :

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <string>
#include <iostream>
#include <algorithm>
 
struct ICaseTraits : public std::char_traits<char>
    {
    static bool eq(char _c1,char _c2)
        {
        return (tolower(_c1) == tolower(_c2));
        }
 
    static bool ne(char _c1,char _c2)
        {
        return (tolower(_c1) != tolower(_c2));
        }
 
    static bool lt(char _c1,char _c2)
        {
        return (tolower(_c1) < tolower(_c2));
        }
 
    static int compare(char const * s1, char const * s2,std::size_t n)
        {
        for(; n > 0; ++s1,++s2,--n)
            {
            if(tolower(*s1) < tolower(*s2))
                return -1;
            else if(tolower(*s1) > tolower(*s2))
                return 1;
            }
        return 0;
        }
 
    static char const * find(char const * str,int n, char ch)
        {
        while(n-- > 0 && tolower(*str) != tolower(ch))
            ++str;
 
        return str;
        }
    };
 
std::ostream & operator<<(std::ostream & ostr, std::basic_string<char, ICaseTraits> const & str)
    {
    return ostr << str.c_str();
    }
 
std::istream & operator>>(std::istream & istr, std::basic_string<char, ICaseTraits> & str)
    {
    std::string s;
    istr >> s;
    str.resize(s.length());
    std::copy(&s[0],&s[0] + str.length(),&str[0]);
    return istr;
    }
 
int main()
    {
    std::basic_string<char,ICaseTraits> password;
 
    std::cout << "Enter the password: ";
    std::cin >> password;
 
    if(password == "gavno")
        std::cout << "Yep!\n";
    else
        std::cout << "Fuck!\n";
    }
Yandex
Объявления
15.04.2011, 21:50     пароль
Ответ Создать тему
Опции темы

Текущее время: 23:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru