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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
#1

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

13.12.2012, 15:45. Просмотров 650. Ответов 7
Метки нет (Все метки)

Я всё правильно сделал?

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++ Сформировать массив указателей на матрицу строк
Можно ли в массив чаров считать строку полностью? C++
Считать символы из вектора в массив чаров C++
Вектор строк и массив указателей на тип char C++
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");
Байт
Эксперт C
 Аватар для Байт
15037 / 9439 / 1381
Регистрация: 24.12.2010
Сообщений: 17,463
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? Названия файлов меняться никогда не будут.
Байт
Эксперт C
 Аватар для Байт
15037 / 9439 / 1381
Регистрация: 24.12.2010
Сообщений: 17,463
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 строк в одном файле.
Байт
Эксперт C
 Аватар для Байт
15037 / 9439 / 1381
Регистрация: 24.12.2010
Сообщений: 17,463
13.12.2012, 21:22     Массив строк как массив указателей на массивы чаров #7
Цитата Сообщение от Vtulhu Посмотреть сообщение
У меня мини-прожка из 250 строк в одном файле.
Но ты ведь судя по разделу, только начинаешь?
Цитата Сообщение от Vtulhu Посмотреть сообщение
Названия файлов меняться никогда не будут.
Значит, все-таки думаешь о будущем? Как только твоя прожка перевалит за 1000 строк, мой совет тебе может пригодиться... А так все ничего. Для начинающего очень даже. Ну, и пока все так неустойчиво в голове, надо иногда и к первоисточникам возвращаться...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 12:40     Массив строк как массив указателей на массивы чаров
Еще ссылки по теме:

Запись вектора строк в массив указателей на тип char C++
Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую объединенный текст из входных строк C++
C++ Как перевести массив строк в массив int
Порядок байт. Массив чаров приводится к типу unsigned int. C++
C++ Cоздать и заполнить массив строк в стиле Си (квадратную матрицу указателей на char)

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

Или воспользуйтесь поиском по форуму:
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     Массив строк как массив указателей на массивы чаров
Ответ Создать тему
Опции темы

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