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

Бинарный файл структур - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Избавиться от 0 на главной и побочной диагоналях квадратной матрицы http://www.cyberforum.ru/cpp-beginners/thread760945.html
В заданной квадратной матрице значения некоторых диагональных элементов равны 0. Переставить строки или столбцы матрицы так, чтобы диагональные элементы стали ненулевыми. В другом случае вывести...
C++ Не работает код! #include <iostream> #include <cstring> using namespace std; #include <process.h> #include <windows.h> const int LEN=80; const int MAX=40; class Stack { private: http://www.cyberforum.ru/cpp-beginners/thread760936.html
C++ Разбить строку(с числами) и записать в массив
Здраствуйте! У меня есть стринг line например "0.1 0.2 0.3 0.4" И мне нужно записать эти числа в массив Я понимаю, что это если не пробел, то записывать можно в другую строку и потом...
Решение уравнение теплопроводности C++
Здравствуйте гики и гуру программирования! Рад поприветствовать всех, вот тоже решил примкнуть к ряду программеров на С, но пока нахожусь фактически на уровне нуля, поэтому хотел попросить помочь...
C++ Виртуальная функция. Создайте класс Matr http://www.cyberforum.ru/cpp-beginners/thread760925.html
/*Создайте класс Matr, определите в нем виртуальную функцию-член matrica(int n), которая определяет сумму элементов квадратной матрицы. Создайте производные классы Matr1 и Matr2 с перегруженной...
C++ Игра быки и коровы Условия игры: компьютер генерирует целое четырехзначное число, в котором все цифры раз-личны. Играющий пытается угадать это число, делая несколько попыток. После каждой попытки компьютер сообщает о... подробнее

Показать сообщение отдельно
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
15.01.2013, 18:46
Так, времени разбирать всё нет, поэтому глянул лишь функцию поиска. Вот, что заметил:
1) Строка 143.
C++
1
if (!q) cout<<"Таких игрушек нет"<<endl;
Что за q? У тебя есть функция q, но нет переменной q. Если бы ты тут просто забыл скобки, то ты бы забыл и параметры..
2) Абсолютно не советую считывать или записывать классы/структуры в двоичный файл методом:
C++
1
2
MYCLASS a;
f.read((char*)&a, sizeof a);
В памяти может быть не то выравнивание - это раз. Во вторых, массивы считываться будут абсолютно не правильно (это я поясню в конце).
3) Записывать массив структур (да и вообще массив) при помощи строки 154:
C++
1
g.write ((char*)&p,sizeof p);
нельзя! Проблема та же, что и в пункте 2.
p.s Тут ещё &p зачем-то используется. p - и так указатель, зачем "&"?

----

Что насчет массивов и их записи в дв. файла. Вот смотри:
C++
1
2
3
4
5
6
7
struct SomeStruct
{
char massive[10];
};
..
SomeStruct a;
int x = sizeof(a);
Как думаешь, чему равно x? 10? Не правильно. x == 4, ведь в структуре у тебя хранится указатель на массив, который равен 4ем (в х32 системах). Правильно будет считывать и записывать каждое поле отдельно, без sizeof. Та же проблема со строчкой 153 (пункт №3). Ты считываешь из двоичного файла всего-то 4 байта, а не весь массив.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru