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

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

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

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

29.05.2014, 10:47. Просмотров 335. Ответов 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 - тоже выводит левые цифры..

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

Запись структуры данных в файл. Динамический список - C++
Первый вопрос. Программа вроде бы пишет в файл. Читает из файла тоже корректно, однако, при чтении в список добавляется еще один...

Структуры и файлы. Ввод структурированных данных и их запись в файл - C++
Составить программу, которая с использованием библиотеки классов языка С++ для работы с файлами выполняет следующие действия: – ввод...

Понятие структуры данных. Элементарные структуры данных. Простые структуры данных - C++
Понятие структуры данных. Элементарные структуры данных. Простые структуры данных: методы реализации, особенности в различных языках...

Запись структуры (в ней есть поля типа данных char*) в бинарный файл - C++
Всем привет! Есть такая структура: struct Telem { int key; char *mark; float engine; char *color; }; В функции main()...

Шаблон структуры данных - массив указателей на заголовки списков - C++
Мне выдали задание на курсовую работу: "Шаблон структуры данных - массив указателей на заголовки списков. Элемент списка содержит...

Создать базу данных (массив структур) в соответствии с заданной структуры - C++
Создать базу данных (массив структур) в соответствии с заданной структуры для двух групп 5-10 структур и для каждой группы. Реализовать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
29.05.2014, 10:54 #2
Цитата Сообщение от pEntity Посмотреть сообщение
Что не так я делаю?
Не выделяете память под sMsg с помощью оператора new.
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
29.05.2014, 10:57 #3
Почему у тебя имена везде разные? То pDataWeapons, то pData. Опиши нормально.
0
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 393
29.05.2014, 11:18  [ТС] #4
nmcf, ага, там не pDataWeapons, а pData. Прошу прощения.

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

А если так, нужно ли потом удалять его? delete[] sMsg, или можно оставить до конца работы программы ? А с iNum такая же ситуация ?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
29.05.2014, 11:53 #5
Цитата Сообщение от pEntity Посмотреть сообщение
const char* sMsg = new char[64]; ?
Типа того. В данном случае у вас sMsg сможет хранить не более шестидесяти четырех символов.
Цитата Сообщение от pEntity Посмотреть сообщение
нужно ли потом удалять его? delete[] sMsg, или можно оставить до конца работы программы ?
Нужно удалять.
Цитата Сообщение от pEntity Посмотреть сообщение
А с iNum такая же ситуация ?
Нет. С ним все в порядке. Это не указатель.
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
29.05.2014, 12:19 #6
Динамическое выделение памяти тут не обязательно.
Во втором приведенном коде ты объявляешь новый массив pData размером в один элемент, у этого элемента индекс 0, его ты инициализируешь а выводишь не существующий элемент с индексом 1.
0
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 393
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"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2014, 20:02
Привет! Вот еще темы с ответами:

запись данных из файла в массив - C++
Здравствуйте форумчане! помогите пожалуйста с кодом.Нужно считать числа из файла в массив. В файле 6 строк: текст-знаки-числа, далее...

Запись данных в массив структур - C++
Нужно считать данные с клавиатуры и записать в массив структур. Где ошибка? Подскажите. #include <stdio.h> #include <string.h> ...

Запись данных в динамический массив - C++
Цель программы: принимать от пользователя ,не ограниченное количество раз, числа типа float и записывать их в динамический массив. Так ,...

Сформировать массив данных с помощью структуры. Отсортировать полученный список по полю «год издания» - C++
Сформировать массив данных с помощью структуры. Предметная область – список книг в библиотеке (номер по порядку, ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.05.2014, 20:02
Ответ Создать тему
Опции темы

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