|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.05.2013, 11:53 | #1 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
в общем в названии темы все сказано, есть динамический массив структур, загружаю с помощью fread, как мне правильно выделить память? знаю что malloc, но как его использовать?
вот пишу Код:
а сколько это ему памяти выделило? на 1 элемент? как выделять память на нужно количество элементов массива? п.с. а все просек: PB = (TPhoneBook *)malloc(i * sizeof(TPhoneBook)); да кстати: fatal error C1083: Не удается открыть файл include: alloc.h: No such file or directory это как? оО объявлен: #include <alloc.h> почему он его не находит? у меня Visual C++ 2008 Express скачана с офф сайта Microsoft Последний раз редактировалось Stilet; 19.05.2013 в 09:00. |
18.05.2013, 12:16 | #2 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
а все разобрался, нужен был только stdlib.h, кстати проверьте пожалуйста все ли правильно?
Код:
Код:
http://programmersforum.ru/showthread.php?t=234486 http://programmersforum.ru/showthread.php?t=234597 ой ща капец вообще ошибок выдало помогите уже кто нибудь пожалуйста ! 1>d:\институт\программирование\курс овая работа за 1 курс 2 семестр\kr_2s\kr_2s\interview, add, delete, change.cpp(42) : error C2296: *: недопустимо, левый операнд имеет тип "int *" 1>d:\институт\программирование\курс овая работа за 1 курс 2 семестр\kr_2s\kr_2s\interview, add, delete, change.cpp(43) : error C2107: недопустимый индекс, косвенное обращение не разрешено 1>d:\институт\программирование\курс овая работа за 1 курс 2 семестр\kr_2s\kr_2s\interview, add, delete, change.cpp(50) : error C2446: <: нет преобразования 'int *' в 'int' 1> Не существует контекста, в котором такое преобразование возможно 1>d:\институт\программирование\курс овая работа за 1 курс 2 семестр\kr_2s\kr_2s\interview, add, delete, change.cpp(50) : error C2040: <: "int" отличается по уровням косвенного обращения от "int *" 1>d:\институт\программирование\курс овая работа за 1 курс 2 семестр\kr_2s\kr_2s\interview, add, delete, change.cpp(53) : error C2296: *: недопустимо, левый операнд имеет тип "int *" 1>d:\институт\программирование\курс овая работа за 1 курс 2 семестр\kr_2s\kr_2s\save, load.cpp(11) : error C2065: COUNT: необъявленный идентификатор 1>d:\институт\программирование\курс овая работа за 1 курс 2 семестр\kr_2s\kr_2s\save, load.cpp(93) : error C2440: =: невозможно преобразовать 'int' в 'int *' 1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции АП ЕПТА !!! ну где все, мне сдавать скоро Последний раз редактировалось Stilet; 19.05.2013 в 09:02. |
19.05.2013, 08:59 | #3 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Цитата:
I'm learning to live...
|
|||
19.05.2013, 09:45 | #4 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
|
19.05.2013, 13:55 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
19.05.2013, 15:42 | #6 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
|
19.05.2013, 16:10 | #7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,318
|
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 19.05.2013 в 16:16. |
19.05.2013, 17:00 | #8 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
К примеру: Цитата:
I'm learning to live...
|
||
20.05.2013, 10:58 | #9 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
BDA, а можете если не сложно прокоментировать?
1. что за новый параметр? 2. почему открываем на "rb", а не "r"? 3. зачем перевод указателя в конец он же и так в конце вроде при открытии? 4. вот эта строка совсем не понятна: "*len = ftell(fp) / sizeof(TPhoneBook);" 5. что за rewind и зачем она? 7. да кстати тоже подумал о том что можно наверное считывать всю структуру, а не по пунктам, это хорошо 8. еще не сталкивался с формой записи **PB, зачем это? 9. и кстати куда вы дели цикл??? там же массив структур, а не один экземпляр Stilet, ладно, попробую уточнить... Код:
Код:
Последний раз редактировалось Stilet; 21.05.2013 в 23:05. |
20.05.2013, 11:35 | #10 |
Форумчанин
Регистрация: 07.10.2008
Сообщений: 213
|
Ради одной строки "безусловно" стоит писать функцию SetLength(TPhoneBook *, int), которую компилятор, с большой вероятностью, сделает inline и развернет в код без переходов.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загрузка из файла динамического массива структур | Astronomy | Общие вопросы C/C++ | 1 | 27.12.2011 21:32 |
запись и загрузка с бинарного файла массива структур | zetaBiT | Общие вопросы C/C++ | 14 | 28.08.2011 23:24 |
Сохранение и загрузка динамического массива. | SkAndrew | Общие вопросы Delphi | 0 | 05.05.2010 15:54 |
Заполнение массива структур данными из файла | Brutallus | Общие вопросы C/C++ | 0 | 26.11.2009 19:01 |