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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
#1

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

29.05.2014, 10:47. Просмотров 322. Ответов 6
Метки нет (Все метки)

Здравствуйте.

Создаю структуру и массив для неё в 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++ Структуры и файлы. Ввод структурированных данных и их запись в файл
C++ Запись данных в динамический массив
C++ Решение задачи и запись данных в новый массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5578 / 2612 / 239
Регистрация: 01.11.2011
Сообщений: 6,422
Завершенные тесты: 1
29.05.2014, 10:54     Запись данных в массив структуры #2
Цитата Сообщение от pEntity Посмотреть сообщение
Что не так я делаю?
Не выделяете память под sMsg с помощью оператора new.
nmcf
4750 / 4088 / 1364
Регистрация: 14.04.2014
Сообщений: 16,033
29.05.2014, 10:57     Запись данных в массив структуры #3
Почему у тебя имена везде разные? То pDataWeapons, то pData. Опиши нормально.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
29.05.2014, 11:18  [ТС]     Запись данных в массив структуры #4
nmcf, ага, там не pDataWeapons, а pData. Прошу прощения.

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

А если так, нужно ли потом удалять его? delete[] sMsg, или можно оставить до конца работы программы ? А с iNum такая же ситуация ?
SatanaXIII
Супер-модератор
Эксперт С++
5578 / 2612 / 239
Регистрация: 01.11.2011
Сообщений: 6,422
Завершенные тесты: 1
29.05.2014, 11:53     Запись данных в массив структуры #5
Цитата Сообщение от pEntity Посмотреть сообщение
const char* sMsg = new char[64]; ?
Типа того. В данном случае у вас sMsg сможет хранить не более шестидесяти четырех символов.
Цитата Сообщение от pEntity Посмотреть сообщение
нужно ли потом удалять его? delete[] sMsg, или можно оставить до конца работы программы ?
Нужно удалять.
Цитата Сообщение от pEntity Посмотреть сообщение
А с iNum такая же ситуация ?
Нет. С ним все в порядке. Это не указатель.
castaway
Эксперт С++
4872 / 3011 / 370
Регистрация: 10.11.2010
Сообщений: 11,061
Записей в блоге: 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++
C++ запись данных из файла в массив
Запись структуры (в ней есть поля типа данных char*) в бинарный файл C++

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

Или воспользуйтесь поиском по форуму:
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
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     Запись данных в массив структуры
Ответ Создать тему
Опции темы

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