Перейти к содержанию

где я неправ? HELP! C++


Рекомендуемые сообщения

Есть код, из книги:

#include

int menu( char *strArray, int sizeOfArray )

{

int userResponse;

printf ("Пункты меню:\n");

while (userResponse < 1 || userResponse > sizeOfArray)

{

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

{

printf ("[%d] %s\n", ++i, strArray+i);

}

scanf ("%d", &userResponse);

}

return userResponse;

}

int main( void )

{

char ex[] = {"первый", "второй"}; /* 21 line */

menu(ex, 2);

return 0;

}

Компилю:

% g++ -o test test.cpp

Выводит ошибку:

test.cpp: In function `int main()':

test.cpp:21: initialization to `char' from `const char *' lacks a cast

test.cpp:21: initialization to `char' from `const char *' lacks a cast

Что это? Как правильно определить массив ex?

Подскажите, плз, уже второй день парюсь!!!

Ссылка на комментарий
Поделиться на другие сайты

Добрый день

1 Код похож на С а не на С++

2 Вы объявляете массив char (1ну строку), а инициализируете массивом строк

#include

int menu( const char **strArray, int sizeOfArray )

{

int userResponse;

printf ("?????? ????:\n");

while (userResponse < 1 || userResponse > sizeOfArray)

{

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

{

printf ("[%d] %s\n", ++i, (const char*)(strArray+i));

}

scanf ("%d", &userResponse);

}

return userResponse;

}

int main( void )

{

const char *ex[] = {"??????", "??????"}; /* 21 line */

menu(ex, 2);

return 0;

}

Так будет работать

Рекомендую еще поработать над многомерными массивами

Успехов

--- sas

Ссылка на комментарий
Поделиться на другие сайты

Кстати у Вас есть логические ошибке в программе

printf ("[%d] %s\n", ++i, (const char*)(strArray+i));

Скорее всего должно быть

printf ("[%d] %s\n", i, (const char*)(strArray+i));

или

printf ("[%d] %s\n", i + 1, (const char*)(strArray+i));

Smile

Ссылка на комментарий
Поделиться на другие сайты

В качестве подсказки:

Ваш printf где я рекомендовал изменить ++i будет всегда печатать мусор вместо строки, а Вам надо печатать ЗНАЧЕНИЕ указателя

Smile

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...