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

cannot convert "char *" to "char".... - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 16:08     cannot convert "char *" to "char".... #1
ПРОБЛЕМА в том, что выбивает ошибку cannot convert "char *" to "char"....
вот программа...посоветуйте что-то:
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
69
70
71
72
#include <iostream.h>
#include <conio.h>
 
void main()
{
clrscr();
int i=0,f,p,a;
int password[5];
char login[5];
char log;
int pass;
 
login[1]="user1";
password[1]=11111;
login[2]="user2";
password[2]=22222;
login[3]="user3";
password[3]=33333;
login[4]="user4";
password[4]=44444;
login[5]="admin";
password[5]=12345;
   cout<<"\t LOGIN    :";cin>>log;
   cout<<"\t PASSWORD :";cin>>pass;
 
    for (i=1;i<=5;i++)
      {
      m2:if (login[i]==log)
      {
     m1: if(password[i]==pass)
        {
        cout<<"\n\t---welcome to the system---";goto m3;
        }
      else
        {
        cout<<"\t --ERROR PASSWORD--\n";f++;
        if (f<3)
        {
        cout<<"\t PASSWORD: ";
        cin>>pass;
        goto m1;
        }
        else { cout<<"COMPLETION OF SESSION";goto m7;}
        }
      }
     else
       {
        cout<<"\t --ERROR LOGIN--\n"; p++;
        if (p<3)
        {
        cout<<"\t LOGIN: ";
        cin>>log;
        goto m2;
        }
        else {
        cout<<"\t --ERROR--\n"<<"\npopitka nesank. dostupa";}
        }
      }
int j;
m3:
if (log=="admin")
   {
    cout<<"base of users:\n";
    for (j=1;j<5;j++)
    {
    cout<<"LOGIN:"<<login[j]<<"\n";
    cout<<"PASSWORD:"<<password[j]<<"\n";
    }}
m7:
 cout<<"\t End.";
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2010, 16:08     cannot convert "char *" to "char"....
Посмотрите здесь:

Ошибка при компиляции "Cannot convert `std::string' to `const char*" C++
Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *" C++
C++ IntelliSense: несовместимые типы операндов ("char" и "const char *")
Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" C++
error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)[20]" в "const char *" C++
C++ C++ ошибка "Cannot convert 'char *' to char"
C++ Не открывается библиотека 'stdafx.h' и "char" не работает с параметром "char*"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.09.2010, 16:09     cannot convert "char *" to "char".... #2
Цитата Сообщение от verona Посмотреть сообщение
посоветуйте что-то
Прочитайте хоть что-нибудь про тип char, а также строки в C/C++ и работу с ними.
vital792
1987 / 1259 / 57
Регистрация: 05.06.2010
Сообщений: 2,213
08.09.2010, 16:11     cannot convert "char *" to "char".... #3
login и password должны быть двумерными
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
08.09.2010, 16:12     cannot convert "char *" to "char".... #4
verona, хоть бы указали строчку в которой ошибка...

Отсчет в массивах начинается с 0 и заканчивается на 1 меньшим элементом чем при обьявлении (mass[5] - последний элемент mass[4])

Цитата Сообщение от verona Посмотреть сообщение
login[5]="admin";
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.09.2010, 16:16     cannot convert "char *" to "char".... #5
Цитата Сообщение от verona Посмотреть сообщение
C++
1
char login[5]
Это массив из 5 символов, а не строк.
Цитата Сообщение от verona Посмотреть сообщение
log=="admin"
Так строки не сравнивают, используйте strcmp.
Про индексацию массивов написано выше.
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 16:32  [ТС]     cannot convert "char *" to "char".... #6
можно написать
if (strcmp login[i]==log).....???
bambino
 Аватар для bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
08.09.2010, 16:33     cannot convert "char *" to "char".... #7
verona
НЕТ!Почитай вниматильней про функцию сравниение строк,strcmp().
vital792
1987 / 1259 / 57
Регистрация: 05.06.2010
Сообщений: 2,213
08.09.2010, 16:34     cannot convert "char *" to "char".... #8
Цитата Сообщение от verona Посмотреть сообщение
strcmp login[i]==lo
msnd поможет))

Добавлено через 26 секунд
msdn то есть))
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 16:37  [ТС]     cannot convert "char *" to "char".... #9
Цитата Сообщение от verona Посмотреть сообщение
login[1]="user1";
как сделать правильно?
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
08.09.2010, 16:40     cannot convert "char *" to "char".... #10
Цитата Сообщение от verona Посмотреть сообщение
можно написать
if (strcmp login[i]==log).....???
правильно мыслите... , но:
log опять таки должно быть строкой/массивом, а не символом и
if(strcmp(login[i], login))...

Добавлено через 1 минуту
Цитата Сообщение от verona Посмотреть сообщение
Цитата Сообщение от verona Посмотреть сообщение
login[1]="user1";
как сделать правильно?
strcpy(login[1], "user1");
опять таки при условии того что login - двухмерный массив
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 16:51  [ТС]     cannot convert "char *" to "char".... #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
69
70
71
72
#include <iostream.h>
#include <conio.h>
 
void main()
{
clrscr();
int i=0,f,p,a;
int password[5];
char login[5];
char log;
int pass;
 
strcpy(login[1], "user1");
password[1]=11111;
strcpy(login[2], "user2");
password[2]=22222;
strcpy(login[3], "user3");
password[3]=33333;
strcpy(login[4], "user4");
password[4]=44444;
strcpy(login[5], "admin");
password[5]=12345;
   cout<<"\t LOGIN    :";cin>>log;
   cout<<"\t PASSWORD :";cin>>pass;
 
    for (i=1;i<=5;i++)
      {
      m2: strcmp (login[i]==log)
      {
     m1: strcmp (password[i]==pass)
        {
        cout<<"\n\t---welcome to the system---";goto m3;
        }
      else
        {
        cout<<"\t --ERROR PASSWORD--\n";f++;
        if (f<3)
        {
        cout<<"\t PASSWORD: ";
        cin>>pass;
        goto m1;
        }
        else { cout<<"COMPLETION OF SESSION";goto m7;}
        }
      }
     else
       {
        cout<<"\t --ERROR LOGIN--\n"; p++;
        if (p<3)
        {
        cout<<"\t LOGIN: ";
        cin>>log;
        goto m2;
        }
        else {
        cout<<"\t --ERROR--\n"<<"\npopitka nesank. dostupa";}
        }
      }
int j;
m3:
strcmp (log=="admin")
   {
    cout<<"base of users:\n";
    for (j=1;j<5;j++)
    {
    cout<<"LOGIN:"<<login[j]<<"\n";
    cout<<"PASSWORD:"<<password[j]<<"\n";
    }}
m7:
 cout<<"\t End.";
getch();
}
Добавлено через 46 секунд
ой только else тогда не надо? или как его можна заменить?
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
08.09.2010, 17:01     cannot convert "char *" to "char".... #12
наша песня хороша, начинай с начала...
ну вот к примеру:

Цитата Сообщение от verona Посмотреть сообщение
char login[5];
, тоесть создан массив на пять символов и тут же:
Цитата Сообщение от verona Посмотреть сообщение
strcpy(login[1], "user1");
, тоесть пытаетесь впихнуть в второй элемент строку "user1". массив должен обьвлятся как двухмерный: login[5][5];

еще раз
Цитата Сообщение от verona Посмотреть сообщение
m2: strcmp (login[i]==log)
strcmp (login[i],log);
эта функция в качестве параметров принимает указатели на строки и возвращает следующие значения:
< 0 - если первая строка меньше второй
= 0 - если строки эквивалентны
> 0 - если первая строка больше второй
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 17:05  [ТС]     cannot convert "char *" to "char".... #13
торможжжжжжжжу
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
08.09.2010, 17:09     cannot convert "char *" to "char".... #14
Строка длинной в 16 символов или если говорить точней то массив из 16 символов определяется так:
C++
1
char s[16]; // Массив из 16 элементов
Первый элемент массива s[0] последний s[15] т.к. индексирование элементов в C\C++ начинается с нуля.


Рабочий вариант
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream.h>
#include <conio.h>
 
void main()
{
  clrscr();
  int i=0, f, p, a;
  int password[5];
  char login[5][128];
  char log[128];
  int pass;
 
  strcpy( login[0], "user1" );
  password[0]=11111;
 
  strcpy( login[1], "user2" );
  password[1]=22222;
 
  strcpy( login[2], "user3" );
  password[2]=33333;
 
  strcpy( login[3], "user4" );
  password[3]=44444;
 
  strcpy( login[4], "admin" );
  password[4]=12345;
 
  cout << "\t LOGIN    :";
  cin >> log;
  cout << "\t PASSWORD :";
  cin >> pass;
 
  for( i = 0; i <= 5; i++)
  {
    m2:
    if ( !strcmp( login[i], log ) )
    {
      m1: if(password[i]==pass)
      {
        cout<<"\n\t---welcome to the system---";goto m3;
      }
      else
      {
        cout<<"\t --ERROR PASSWORD--\n";f++;
        if (f<3)
        {
          cout<<"\t PASSWORD: ";
          cin>>pass;
          goto m1;
        }
        else
        {
          cout<<"COMPLETION OF SESSION";
          goto m7;
        }
      }
    }
    else
    {
      cout<<"\t --ERROR LOGIN--\n"; p++;
      if (p<3)
      {
        cout<<"\t LOGIN: ";
        cin>>log;
        goto m2;
      }
      else
      {
        cout<<"\t --ERROR--\n"<<"\npopitka nesank. dostupa";}
      }
    }
    int j;
    m3:
    if (log=="admin")
    {
      cout<<"base of users:\n";
      for (j=1;j<5;j++)
      {
        cout<<"LOGIN:"<<login[j]<<"\n";
        cout<<"PASSWORD:"<<password[j]<<"\n";
      }
    }
  m7:
  cout<<"\t End.";
  getch();
}
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
08.09.2010, 17:10     cannot convert "char *" to "char".... #15
это поможет вам в борьбе с непонятными строками
Вложения
Тип файла: pdf 8_C08.pdf (420.7 Кб, 72 просмотров)
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
08.09.2010, 17:16     cannot convert "char *" to "char".... #16
Использование goto плохой стиль программирование, используйте циклы.
bambino
 Аватар для bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
08.09.2010, 17:45     cannot convert "char *" to "char".... #17
Как по мне то,goto неуместен в больших проектах,так как он запутивает код програми,а в малих примерах его вполне можно юзать.
Impuls1989
 Аватар для Impuls1989
6 / 6 / 0
Регистрация: 08.09.2010
Сообщений: 35
08.09.2010, 19:06     cannot convert "char *" to "char".... #18
Еще ошибка:
C
1
2
char log;
if (log=="admin")
char - один символ, а вы его сравниваете со строкой. Ну да это ладно, а Вам никто не говорил, что использование goto - плохой стиль программирования?
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
09.09.2010, 08:35     cannot convert "char *" to "char".... #19
Цитата Сообщение от rik_nel Посмотреть сообщение
Как по мне то,goto неуместен в больших проектах,так как он запутивает код програми,а в малих примерах его вполне можно юзать.
Если писать в мальньких проэктах, то со временем выработается привычка и вы будет писать goto и в больших проэктах поэтому лучше приучать себя с самого начала писать без goto. Но goto можно использывать например при выходе из нескольких вложеных циклов т.к. break не поможет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2010, 10:28     cannot convert "char *" to "char"....
Еще ссылки по теме:

Аргумент типа "unsigned char*" несовместим с параметром типа "const char*" C++
Работа с функциями, "Cannot convert 'char *' to 'int'" C++
Ошибка "error C2446: :: нет преобразования "int" в "char *" C++
C++ Невозможно преобразовать параметр 2 из "char" в "const char *"
C++ Несовместимые типы операндов "char" и "const char*"

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.09.2010, 10:28     cannot convert "char *" to "char".... #20
Mencey,
Ну, можно с помощью нескольких ключей (по количеству вложенных циклов) выходить, но всё же по goto меньше заморочек... Но сам я никогда им не пользовался, даже не знаю, почему))) Всегда ключи))
Yandex
Объявления
09.09.2010, 10:28     cannot convert "char *" to "char"....
Ответ Создать тему
Опции темы

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