Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/39: Рейтинг темы: голосов - 39, средняя оценка - 4.72
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
#1

Инициализация массива строк

23.05.2011, 08:03. Просмотров 7170. Ответов 9
Метки нет (Все метки)

Здравствуйте!
Подскажите, как можно инициализировать массив строковых констант неопределенного размера?
Для инициализации массива неопределенного размера типа float я использовал следующее:

C++
1
2
3
4
5
6
7
8
int main()
{ 
float *energy=NULL;
...
energy=(float*)malloc(number*sizeof(float));
...
return 0;
}
Мне нужно тоже самое, но только не для float, а для строковых констант.
Заранее благодарю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 08:03
Ответы с готовыми решениями:

Инициализация массива строк внутри класса
Доброго времени суток! Есть такая проблема... Дан класс, в нем есть массив...

Инициализация массива строк string в классе
Как сделать подскажите? #include <iostream> #include <string> #include...

Инициализация массива
Есть массив: int d; Есть константа бесконечности (просто константа) inf,...

Инициализация массива
Здравствуйте! хм... сначала написал так. POINT p={00,00,10,10,10,10,10,10};...

инициализация массива
Доброго времени. Инициализация массива с указанием размера 80 проходит гладко,...

9
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,992
Завершенные тесты: 1
23.05.2011, 08:15 #2
char**energy;
...
energy=(char**)malloc(number*sizeof(char*));

Что то такое...но нужно проверять, я использую в основном new. В массиве будут ссылки на начало строк.
1
Danvern
40 / 39 / 5
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 08:18 #3
ну или так можно
char * name[] = {"1 строка","вторая строка"};
0
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
23.05.2011, 08:29  [ТС] #4
char * name[] = {"1 строка","вторая строка"}; - так не подойдет, т.к. число строк в массиве является переменной. Это мне нужно для того, чтобы считать записи из файла, который выглядит примерно так:

O1 O 0.2125 -0.1482 -0.1194
O2 O 0.0102 -0.1059 -0.0775
C3 C 0.1852 -0.0959 -0.1373
...
C10 C 0.1256 -0.1194 -0.115

и т.д.

Число записей известно, но может варьироваться. Со считыванием чисел и символов все ясно, но как считать первые символы пока не знаю (
0
Danvern
40 / 39 / 5
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 08:43 #5
можно попробовать со структурой это сделать.
struct name
{
char n[2];
float f1,f2,f3;
}snm[сколько тебе нужно элементов];
1
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
23.05.2011, 08:47  [ТС] #6
Благодарю, буду пробовать, правда со структурами пока не работал
0
Danvern
40 / 39 / 5
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 08:49 #7
я думаю что со структурами твою задачу реализовать будет очень легко..
0
J10
4 / 4 / 3
Регистрация: 30.04.2011
Сообщений: 50
23.05.2011, 08:50 #8
Как то наверное так:

C++
1
2
3
4
5
6
int count;
int size;
 
const char **p;
 
*p = (const char **)malloc(count*sizeof(double));
А дальше инициализируешь каждую строку:

C++
1
p[count] = (const char *)malloc(size);
1
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
23.05.2011, 09:01  [ТС] #9
Цитата Сообщение от Danvern Посмотреть сообщение
я думаю что со структурами твою задачу реализовать будет очень легко..
Ну видимо придется разбираться с ними )

2 J10 - благодарю, как то так я все и представлял

Добавлено через 5 минут
хотя нет, *p = (const char **)malloc(count*sizeof(double)); - const char ** cannot be assigned to an entity of type const char *
0
J10
4 / 4 / 3
Регистрация: 30.04.2011
Сообщений: 50
23.05.2011, 09:05 #10
Поторопился, нужно так:

C++
1
2
3
4
5
6
int count;
int size;
 
const char **p;
 
p = (const char **)malloc(count*sizeof(double));
1
23.05.2011, 09:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 09:05

Инициализация массива
int ** mas, n; cout << "Введите порядок треугольника паскаля: " << endl;...

Инициализация массива C++
Почему, если мы не инициализируем переменную, то при попытке работы с ней будет...

Инициализация массива
Нужно объявить несколько статических строк, содержащих байты со значениями в...


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

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

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