Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2019, 15:05   #1
LomionDK
Пользователь
 
Регистрация: 24.02.2019
Сообщений: 33
По умолчанию Чтение данных в структуру

Структура выглядит так
Код:
struct Comp {
	int n = 0;
	int id;
	struct game {
		char game[20];
		char type[20];
	}igra[10];
};
Comp *comp = NULL;
system("cls");
					cout << kolComp << endl;
					comp = (Comp *)realloc(comp, kolComp + 1 * sizeof(Comp));
				id:
					cout << "Введите номер компьютера: ";
					cin >> comp[kolComp].id;
					if (comp[kolComp].id > 99 || comp[kolComp].id < 10) {
						system("cls");
						cin.ignore();
						goto id;
					}
					else {
						for (int i = 0; i < kolComp; i++) {
							if (comp[kolComp].id == comp[i].id) { cout << "Данный компьютер уже содержится в базе." << endl; goto id; }
						}
					}
Часть кода. При выводе id выдаются рандомные числа.
LomionDK вне форума Ответить с цитированием
Старый 01.04.2019, 15:09   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

(kolComp + 1) * sizeof(Comp) и по хорошему comp надо сохранять, т.к. realloc вернет nullptr, если не смогет, и будет утечка
p51x вне форума Ответить с цитированием
Старый 01.04.2019, 15:16   #3
LomionDK
Пользователь
 
Регистрация: 24.02.2019
Сообщений: 33
По умолчанию

А как сохранять, не подскажите?
LomionDK вне форума Ответить с цитированием
Старый 01.04.2019, 15:18   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Как обычно, сохранить в другой переменной.
p51x вне форума Ответить с цитированием
Старый 01.04.2019, 15:21   #5
LomionDK
Пользователь
 
Регистрация: 24.02.2019
Сообщений: 33
По умолчанию

И еще вопрос. Вот, когда сделал через динам.память, запись данных в второстепенный массив вызывает исключение.
Код:
cin.ignore(numeric_limits<streamsize>::max(), '\n');
					comp[kolComp].n++;
					cout << "Введите название игры: ";
				game:
					cin.get(comp[kolComp].igra[comp[kolComp].n].game, 20);
Память на 10 записей вроде изначально выделена в структуре.
LomionDK вне форума Ответить с цитированием
Старый 01.04.2019, 15:25   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Поставьте точку останова и посмотрите какие там индексы и что с памятью.
p51x вне форума Ответить с цитированием
Старый 01.04.2019, 15:29   #7
LomionDK
Пользователь
 
Регистрация: 24.02.2019
Сообщений: 33
По умолчанию

По структуре должен быть 1, но показывает -84132...
Похоже надо так же задать отдельно динам.память и на ту структуру.
LomionDK вне форума Ответить с цитированием
Старый 01.04.2019, 15:32   #8
LomionDK
Пользователь
 
Регистрация: 24.02.2019
Сообщений: 33
По умолчанию

Такой вопрос, а если задавать память так
Код:
Comp::game *igra = NULL;
То данный ввод данных будет правильным?
Код:
cin.get(comp[kolComp].igra[comp[kolComp].n].game, 20);
Или уже другой синтаксис? Или так задавать вообще неправильно?
LomionDK вне форума Ответить с цитированием
Старый 01.04.2019, 15:39   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от LomionDK Посмотреть сообщение
а если задавать память так
Так память не задается. Так вы igra сделали динамически?

Цитата:
Сообщение от LomionDK Посмотреть сообщение
По структуре должен быть 1, но показывает -84132...
Вы в той точке индексы какие передаете? Если вы вылезете за границы, то там может быть и -8833.
p51x вне форума Ответить с цитированием
Старый 01.04.2019, 15:42   #10
LomionDK
Пользователь
 
Регистрация: 24.02.2019
Сообщений: 33
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Так вы igra сделали динамически?
Моя задача сделать ее такой. Размер которой будет зависеть от n в главной структуре.
Цитата:
Сообщение от p51x Посмотреть сообщение
Вы в той точке индексы какие передаете?
Должен передаваться 0(т.е. первый).
LomionDK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из файла в структуру, вывод структуры на экран. dane.yeah Общие вопросы C/C++ 2 24.10.2013 14:23
Запись данных в структуру MatrixGru Общие вопросы Delphi 6 21.10.2013 10:30
Чтение из файла и запись в структуру. asmars Общие вопросы C/C++ 3 06.04.2012 19:04
чтение из текстового файла в структуру TRAIN и вывод информации по запросу (Паскаль) Arabic_Coffee Помощь студентам 0 14.05.2011 21:11
Чтение с файла в структуру trance-boy Общие вопросы C/C++ 6 08.11.2010 00:11