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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2009, 16:48   #11
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Раз пишите в файл структуру, то и сам файл, наверное надо открывать как бинарный? fopen(wayToFileData, "r+b");
Похоже что так работает Тогда встречный вопрос! А почему чтение попорядку, дозапись в конец, создание файла проходят в текстовом виде без проблемм?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 20.10.2009, 17:18   #12
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Потому что некоторые управляющие символы преобразуются потоком в нечто другое(допустим табуляция обычно преобразуется в несколько пробелов и т.д.). Для текста это не критично, но для структуры, со строго определённым размером, в которой записаны не символьные данные это имеет значение

Последний раз редактировалось netrino; 20.10.2009 в 17:21.
netrino вне форума Ответить с цитированием
Старый 20.10.2009, 18:41   #13
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Так! Ну с эти разобрался! А что насчет размера структуры? Почему она имеет размер 73 байта а не 68 как должно быть?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 20.10.2009, 19:03   #14
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Вы уверены, что она занимает у Вас именно 73 байта? Это было бы странно. У меня занимает 72.
А происходит это(72 вместо 68) из-за выравнивания данных в структуре. По-умолчанию выравнивание определятся по границе самого большого базового типа(в данном случае double, 8 байт), потому размер структуры всегда будет кратен 8-ми.
netrino вне форума Ответить с цитированием
Старый 20.10.2009, 19:06   #15
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Нет! Именно 73 байта...
А зачем вообще намеренно увеличивать размер структуры? Или это сделано для более быстрого доступа к данным?
Искусственный интеллект - фигня по сравнению с естественной глупостью

Последний раз редактировалось Impuls1989; 20.10.2009 в 19:08.
Impuls1989 вне форума Ответить с цитированием
Старый 20.10.2009, 21:27   #16
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Impuls1989 Посмотреть сообщение
Нет! Именно 73 байта...
А зачем вообще намеренно увеличивать размер структуры? Или это сделано для более быстрого доступа к данным?
Хм... почему 73 байта так сходу и не скажу.. В каких случаях он такое выдаёт? У меня sizeof(Student) выдал 72 байта, как и должно.
netrino вне форума Ответить с цитированием
Старый 20.10.2009, 22:06   #17
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Код:
#pragma pack(push, 1)
struct Student
{
	char FIO[30];
	unsigned int Year;
	char GroupNumber[10];
	int subject[4];
	double middleMark;
};
#pragma pack(pop)
А так выдает 68
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 20.10.2009, 22:29   #18
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Да, #pragma pack задаёт выравнивание, Вы задали его равным 1
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг нужной информации Lemo Помощь студентам 17 19.08.2009 02:37
Клик в нужной части экрана suvor111 JavaScript, Ajax 9 29.04.2009 19:57
Сохранять текст в нужной кодировке snake-as Microsoft Office Excel 5 28.10.2008 06:37
Проверка наличия нужной Флешки ??? Noor Общие вопросы Delphi 7 09.11.2007 17:39