|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.11.2015, 11:20 | #11 |
Пользователь
Регистрация: 26.09.2010
Сообщений: 96
|
Я могу вас попросить показать пример на коленке?
|
16.11.2015, 11:35 | #12 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Пример чего? Я о том, что не надо решать всю задачу "сделать чтоб массив структур был не фиксированного размера, и сохранялся в файл, и загружался из него, и еще в блекджек играл". Для начала надо решить задачу "как создавать массив не фиксированного размера"
https://ru.wikipedia.org/wiki/%D0%94....D0.B8_C.2B.2B Я кстати не понял где вы у себя нашли двухмерный массив, вроде все одномерные. Двухмерный это когда элемент массива является массивом.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
17.11.2015, 12:36 | #13 |
Пользователь
Регистрация: 26.09.2010
Сообщений: 96
|
Разобрался, но не до конца...
В моем примере я присваиваю переменной (_base) структуру и расширяю ее. А как мне не присваивать к переменной(_base) область видимости которой только внутри функции(createDB). Как мне работать непосредственно с самой структурой (base)? Код:
|
17.11.2015, 13:08 | #14 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Что-то не понял вопрос.
base в этом коде (typedef struct {...} base) это просто тип данных, а не глобальная переменная. Ну как "шаблон" для создания на его основе своего экземпляра такой структуры. Кстати, обычно когда массив так расширяют, то делают не +1, а *2. Ну и размер в отдельной переменной хранить.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
17.11.2015, 13:14 | #15 | ||
Пользователь
Регистрация: 26.09.2010
Сообщений: 96
|
Цитата:
Цитата:
Размер, вы имеете ввиду конкретно в данной функции? Огласить его в самом начале и использовать переменную? |
||
17.11.2015, 13:28 | #16 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Код:
Тут с несколькими элементами смысла может и не особо много, просто все нормальные универсальные реализации динамических массивов (например vector в С++) примерно так делают.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 17.11.2015 в 16:21. |
17.11.2015, 13:45 | #17 |
Пользователь
Регистрация: 26.09.2010
Сообщений: 96
|
Проблема в том что изначально массив пуст. Эта функция срабатывает в момент подгрузки main, заполняя пустой массив данными, поэтому заранее увеличить массив в два раза я не могу.
А второе вы имеете ввиду что мол лучше сразу указывать кол-во данных в массиве? Это конечно лучше, но я не смогу узнать реальное кол-во данных в нем, если не буду использовать доп. переменную (а мне нельзя этого делать) |
17.11.2015, 13:47 | #18 |
Пользователь
Регистрация: 26.09.2010
Сообщений: 96
|
Если вместо _base = realloc(_base,sizeof(base)*(i+1));
буду использовать _base = realloc(_base,sizeof(base)*2); Память ведь будет каждый раз увеличиваться в два раза чем прежде, по мойму это больше вредит? Последний раз редактировалось makar3000; 17.11.2015 в 13:49. |
17.11.2015, 14:46 | #19 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Дык надо не каждый раз перевыделять, а только когда счетчик заполненных элементов (обычно называется size или count) достигнет количества выделенных (обычно называется capacity).
Код:
https://www.happybearsoftware.com/im...-dynamic-array
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 17.11.2015 в 14:53. |
17.11.2015, 15:25 | #20 |
Пользователь
Регистрация: 26.09.2010
Сообщений: 96
|
Не понимаю как я могу это использовать в своей задаче...
Что бы создать array мне нужно кол-во данных в файле (строк) их я узнаю при добавлении уже в массив. Мне что сделать два цикла? один который сначала считает, а другой уже заполняет массив? И такой вопрос, как я понял, sizeof(base)/sizeof(base[0]) не работает с массивами на которые выделена память... Подскажите, как тогда подсчитать кол-во элементов ? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как при указании типа переменной сослаться на файл? | fezilk25 | Общие вопросы Delphi | 1 | 25.04.2013 23:45 |
Сохранение формы в файл. КАК? | Pavelsss | JavaScript, Ajax | 6 | 28.12.2012 15:59 |
Сохранение структуры в файл | Fellics{новичок} | Общие вопросы Delphi | 20 | 20.11.2011 20:21 |
сохранение нескольких излбражений в один файл.. как? | IGWI | Мультимедиа в Delphi | 7 | 18.11.2008 23:16 |
Сохранение в файл сложной динамической структуры | _Инженер_ | Общие вопросы Delphi | 24 | 20.10.2008 09:38 |