Гость Опубликовано 20 марта, 2003 Жалоба Поделиться Опубликовано 20 марта, 2003 Есть код, из книги: #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? Подскажите, плз, уже второй день парюсь!!! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 марта, 2003 Жалоба Поделиться Опубликовано 21 марта, 2003 Исправь строку 21 на char *ex[] = { ... }; Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 марта, 2003 Жалоба Поделиться Опубликовано 21 марта, 2003 Добрый день 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 марта, 2003 Жалоба Поделиться Опубликовано 21 марта, 2003 Кстати у Вас есть логические ошибке в программе 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)); Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 марта, 2003 Жалоба Поделиться Опубликовано 21 марта, 2003 Ох и вообще работать не будет после более внимательного рассмотрения Работайте над ошибками Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 марта, 2003 Жалоба Поделиться Опубликовано 21 марта, 2003 В качестве подсказки: Ваш printf где я рекомендовал изменить ++i будет всегда печатать мусор вместо строки, а Вам надо печатать ЗНАЧЕНИЕ указателя Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 марта, 2003 Жалоба Поделиться Опубликовано 21 марта, 2003 Большое спасибо!!! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.