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

Массив строк как массив указателей на массивы чаров - C++

Восстановить пароль Регистрация
 
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
13.12.2012, 15:45     Массив строк как массив указателей на массивы чаров #1
Я всё правильно сделал?

C++
1
2
3
4
5
6
7
8
9
10
11
12
char* Files[4];
Files[0] = "AHEAD";
Files[1] = "LEFT";
Files[2] = "RIGHT";
Files[3] = NULL;
 
int searchFile() {
int i = 0;
while (Files[i] != NULL) {
if (FileExists(Files[i]) return i;
return -1;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 15:45     Массив строк как массив указателей на массивы чаров
Посмотрите здесь:

C++ по поводу указателей. Как правильно задавать массив указателей и его удалять?
C++ Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже -->
C++ сформировать массив указателей[10]на масиив строк [5][25]
считать символы из вектора в массив чаров C++
Вектор строк и массив указателей на тип char C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
13.12.2012, 15:57     Массив строк как массив указателей на массивы чаров #2
Копирование строк по другому нужно делать:
C++
1
strcpy(Files[0], "AHEAD");
Байт
 Аватар для Байт
13954 / 8785 / 1221
Регистрация: 24.12.2010
Сообщений: 15,894
13.12.2012, 16:21     Массив строк как массив указателей на массивы чаров #3
return -1 вынеси из тела цикла. Если я правильно понял твои намерения
C++
1
2
3
4
while (Files[i] != NULL) {
if (FileExists(Files[i]) return i;
}
return -1;
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
13.12.2012, 17:46  [ТС]     Массив строк как массив указателей на массивы чаров #4
Цитата Сообщение от Байт Посмотреть сообщение
return -1 вынеси из тела цикла. Если я правильно понял твои намерения
Да, действительно. Но это опечатка, по сути. Главным образом я сомневался насчёт указателей, чаров и т.п. Это для меня тёмный лес. А в каких местах можно понаставить слово const? Названия файлов меняться никогда не будут.
Байт
 Аватар для Байт
13954 / 8785 / 1221
Регистрация: 24.12.2010
Сообщений: 15,894
13.12.2012, 20:46     Массив строк как массив указателей на массивы чаров #5
Цитата Сообщение от Vtulhu Посмотреть сообщение
Главным образом я сомневался насчёт указателей, чаров и т.п.
Как-будто все нормально. Можно и так написать
C
1
 static *Files[] = { "AHEAD", "LEFT", "RIGTH", NULL };
static для того чтоб Files не было глобальной переменной. Она будет видна только в этом исходнике. В другом ты можешь опять ввести переменную Files, которая не будет совершенно связана с этой
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
13.12.2012, 20:52  [ТС]     Массив строк как массив указателей на массивы чаров #6
Цитата Сообщение от Байт Посмотреть сообщение
static для того чтоб Files не было глобальной переменной. Она будет видна только в этом исходнике. В другом ты можешь опять ввести переменную Files, которая не будет совершенно связана с этой
Вы слишком хорошего мнения о моих способностях C++-программиста. У меня мини-прожка из 250 строк в одном файле.
Байт
 Аватар для Байт
13954 / 8785 / 1221
Регистрация: 24.12.2010
Сообщений: 15,894
13.12.2012, 21:22     Массив строк как массив указателей на массивы чаров #7
Цитата Сообщение от Vtulhu Посмотреть сообщение
У меня мини-прожка из 250 строк в одном файле.
Но ты ведь судя по разделу, только начинаешь?
Цитата Сообщение от Vtulhu Посмотреть сообщение
Названия файлов меняться никогда не будут.
Значит, все-таки думаешь о будущем? Как только твоя прожка перевалит за 1000 строк, мой совет тебе может пригодиться... А так все ничего. Для начинающего очень даже. Ну, и пока все так неустойчиво в голове, надо иногда и к первоисточникам возвращаться...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 12:40     Массив строк как массив указателей на массивы чаров
Еще ссылки по теме:

C++ создать статический массив строк как статический массив указателей на строки, задание ниже -->
C++ Ввод строк и запись их в массив указателей
Запись вектора строк в массив указателей на тип char C++

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

Или воспользуйтесь поиском по форуму:
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
14.12.2012, 12:40  [ТС]     Массив строк как массив указателей на массивы чаров #8
Цитата Сообщение от Байт Посмотреть сообщение
Но ты ведь судя по разделу, только начинаешь?
Уже кончил. Мне С++ нужен для одной малюсенькой программульки, которая уже практически написана. Остались всякие мелочи типа той, что обсуждается в данной теме. А вообще я программирую на другом языке (PureBasic).

Значит, все-таки думаешь о будущем?
Иногда даже слишком. Из-за этого даже очень простая программа делается долго. Здесь "совершенный код" не нужен.

Как только твоя прожка перевалит за 1000 строк, мой совет тебе может пригодиться...
Вряд ли. Да и эти 250 строк набрались только потому что у меня очень размашистый почерк. Я люблю расписывать на несколько строк, чтобы всё понятно было и нельзя было запутаться. Всякие там ++a = ++b[c++] не для меня.

Я правильно понимаю, что вот так делать нельзя, потому что после отработки этой процедурки сборщик мусора может в любой момент освободить эту область памяти и указатели начнут указывать на непонятно что? А как надо?
C++
1
2
3
4
5
6
void initFiles() {
Files[0] = "AHEAD";
Files[1] = "LEFT";
Files[2] = "RIGHT";
Files[3] = NULL;
}
Yandex
Объявления
14.12.2012, 12:40     Массив строк как массив указателей на массивы чаров
Ответ Создать тему
Опции темы

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