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

Запись данных в массив структуры - C++

Восстановить пароль Регистрация
 
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
29.05.2014, 10:47     Запись данных в массив структуры #1
Здравствуйте.

Создаю структуру и массив для неё в 14 ячеек:

C++
1
2
3
4
5
6
typedef struct sData
{
    const char* sMsg;
 
    int         iNum;
} pData[ 14 ];
Делаю запись в первую ячейку:

C++
1
sData   pData[1] = { "Hellow", 5 };
Вывожу:

C#
1
printf( "DEBUG: %s\n", pDataWeapons[ 1 ].sMsg);
У меня выводятся кракозябрики и смайлики. iNum - тоже выводит левые цифры..

Что не так я делаю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 10:47     Запись данных в массив структуры
Посмотрите здесь:

C++ Шаблон структуры данных - массив указателей на заголовки списков
Создать базу данных (массив структур) в соответствии с заданной структуры C++
Сформировать массив данных с помощью структуры. Отсортировать полученный список по полю «год издания» C++
Запись данных в динамический массив через указатели C++
C++ Структуры и файлы. Ввод структурированных данных и их запись в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
29.05.2014, 10:54     Запись данных в массив структуры #2
Цитата Сообщение от pEntity Посмотреть сообщение
Что не так я делаю?
Не выделяете память под sMsg с помощью оператора new.
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,540
29.05.2014, 10:57     Запись данных в массив структуры #3
Почему у тебя имена везде разные? То pDataWeapons, то pData. Опиши нормально.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
29.05.2014, 11:18  [ТС]     Запись данных в массив структуры #4
nmcf, ага, там не pDataWeapons, а pData. Прошу прощения.

SatanaXIII - const char* sMsg = new char[64]; ?

А если так, нужно ли потом удалять его? delete[] sMsg, или можно оставить до конца работы программы ? А с iNum такая же ситуация ?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
29.05.2014, 11:53     Запись данных в массив структуры #5
Цитата Сообщение от pEntity Посмотреть сообщение
const char* sMsg = new char[64]; ?
Типа того. В данном случае у вас sMsg сможет хранить не более шестидесяти четырех символов.
Цитата Сообщение от pEntity Посмотреть сообщение
нужно ли потом удалять его? delete[] sMsg, или можно оставить до конца работы программы ?
Нужно удалять.
Цитата Сообщение от pEntity Посмотреть сообщение
А с iNum такая же ситуация ?
Нет. С ним все в порядке. Это не указатель.
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
29.05.2014, 12:19     Запись данных в массив структуры #6
Динамическое выделение памяти тут не обязательно.
Во втором приведенном коде ты объявляешь новый массив pData размером в один элемент, у этого элемента индекс 0, его ты инициализируешь а выводишь не существующий элемент с индексом 1.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2014, 20:02     Запись данных в массив структуры
Еще ссылки по теме:

C++ Решение задачи и запись данных в новый массив
Запись данных в массив структур C++
C++ Запись структуры данных в файл. Динамический список

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

Или воспользуйтесь поиском по форуму:
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
30.05.2014, 20:02  [ТС]     Запись данных в массив структуры #7
castaway, я вас не понял

Добавлено через 23 часа 22 минуты
Вобщем не выходит теперь ничего:

C++
1
2
3
4
5
6
7
8
    struct sData
    {
        const char* sMsg;
 
        int         iNum;
    } pData[ 14 ];
 
    sData   pData[0] = { "Hellow", 5 };

1>Cont.cpp(12): error C2466: невозможно выделить память для массива постоянного нулевого размера
1>Cont.cpp(12): error C2086: main::sData pData[14]: переопределение
1> Cont.cpp(10): см. объявление "pData"
А так

C++
1
2
3
4
5
6
7
8
    struct sData
    {
        const char* sMsg;
 
        int         iNum;
    } pData[ 14 ];
 
    sData   pData[1] = { "Hellow", 5 };
1>Cont.cpp(12): error C2369: pData: переопределение; различные индексы
1> Cont.cpp(10): см. объявление "pData"
Yandex
Объявления
30.05.2014, 20:02     Запись данных в массив структуры
Ответ Создать тему
Опции темы

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