Гость Опубликовано 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 будет всегда печатать мусор вместо строки, а Вам надо печатать ЗНАЧЕНИЕ указателя Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.