Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
#1

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

13.12.2012, 15:45. Просмотров 1077. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 15:45
Ответы с готовыми решениями:

Массив указателей на массив строк и сортировка массива указателей
Добрый день. Поступил вопрос. Есть задача. У нас встроенный массив char...

Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже -->
Слова английского текста рассортировать по возрастанию количества заданной...

создать статический массив строк как статический массив указателей на строки, задание ниже -->
Слова английского текста, начинающиеся с гласных букв, рассортировать в...

Массив указателей на массивы
Задание: инициализировать массив из 10 указателей. Каждый из 10 этих указателей...

Как объявить массив из 5 указателей на массив из 5 int-ов?
Здравствуйте Если, int m массив из 5 int int *m массив из 5 указателей...

7
v.a.l.i.d
416 / 381 / 113
Регистрация: 21.09.2012
Сообщений: 913
13.12.2012, 15:57 #2
Копирование строк по другому нужно делать:
C++
1
strcpy(Files[0], "AHEAD");
0
Байт
Эксперт C
17938 / 11929 / 2478
Регистрация: 24.12.2010
Сообщений: 24,032
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;
1
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
13.12.2012, 17:46  [ТС] #4
Цитата Сообщение от Байт Посмотреть сообщение
return -1 вынеси из тела цикла. Если я правильно понял твои намерения
Да, действительно. Но это опечатка, по сути. Главным образом я сомневался насчёт указателей, чаров и т.п. Это для меня тёмный лес. А в каких местах можно понаставить слово const? Названия файлов меняться никогда не будут.
0
Байт
Эксперт C
17938 / 11929 / 2478
Регистрация: 24.12.2010
Сообщений: 24,032
13.12.2012, 20:46 #5
Цитата Сообщение от Vtulhu Посмотреть сообщение
Главным образом я сомневался насчёт указателей, чаров и т.п.
Как-будто все нормально. Можно и так написать
C
1
 static *Files[] = { "AHEAD", "LEFT", "RIGTH", NULL };
static для того чтоб Files не было глобальной переменной. Она будет видна только в этом исходнике. В другом ты можешь опять ввести переменную Files, которая не будет совершенно связана с этой
0
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
13.12.2012, 20:52  [ТС] #6
Цитата Сообщение от Байт Посмотреть сообщение
static для того чтоб Files не было глобальной переменной. Она будет видна только в этом исходнике. В другом ты можешь опять ввести переменную Files, которая не будет совершенно связана с этой
Вы слишком хорошего мнения о моих способностях C++-программиста. У меня мини-прожка из 250 строк в одном файле.
0
Байт
Эксперт C
17938 / 11929 / 2478
Регистрация: 24.12.2010
Сообщений: 24,032
13.12.2012, 21:22 #7
Цитата Сообщение от Vtulhu Посмотреть сообщение
У меня мини-прожка из 250 строк в одном файле.
Но ты ведь судя по разделу, только начинаешь?
Цитата Сообщение от Vtulhu Посмотреть сообщение
Названия файлов меняться никогда не будут.
Значит, все-таки думаешь о будущем? Как только твоя прожка перевалит за 1000 строк, мой совет тебе может пригодиться... А так все ничего. Для начинающего очень даже. Ну, и пока все так неустойчиво в голове, надо иногда и к первоисточникам возвращаться...
0
Vtulhu
423 / 377 / 200
Регистрация: 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;
}
0
14.12.2012, 12:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 12:40

Ввод строк и запись их в массив указателей
Мне надо считать определённое количество слов, это количество я должен ввести,...

Сформировать массив указателей на матрицу строк
может кто нибудь обьяснит что требуеться в задании сделать. сформировать...

Очистить массив чаров
#include "stdafx.h" #include <algorithm> #include <iostream> #include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru