|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
31.05.2012, 15:35 | #1 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
fstream && struct
доброго времени суток!
Возникла проблемка при записи структур в файл пишу так Код:
Код:
Код:
Почему при считывании у меня последняя структура дважды выводится? Я ошибся где то при вводе или выводе? Что я не усмотрел? Всем спасибо!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
01.06.2012, 15:19 | #2 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
to be continued...
И так! я переписал проект и собствеено выкладываю его вам весь!
вопрос тот же почему не срабатывает eof Хотя размер файла делёный на размер структуры равен количеству записанных мной структур! код Код:
скрины и архив с ехе и исходником
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
01.06.2012, 22:49 | #3 |
Пользователь
Регистрация: 03.01.2011
Сообщений: 49
|
Вот в этом месте
Код:
Код:
|
01.06.2012, 23:29 | #4 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
спасибо конечно!
Но более интересно почему именно eof сама по себе не срабатывает? Просто как это обойти я знаю. Но вот почему dont working? i dont know!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 Последний раз редактировалось Hacker19_90; 01.06.2012 в 23:34. |
01.06.2012, 23:36 | #5 |
Пользователь
Регистрация: 03.01.2011
Сообщений: 49
|
Если с английским дружите
If the End-of-File is reached before n characters have been read, the array will contain all the elements read until it, and the failbit and eofbit will be set (which can be checked with members fail and eof respectively). То есть пока вы не попытаетесь прочитать дальше конца файла флаг eofbit не будет установлен. |
01.06.2012, 23:43 | #6 |
Delphi Warrior
Старожил
Регистрация: 15.08.2008
Сообщений: 2,502
|
Господи родной! Да где же вы раньше то были?
+1 ВАМ ОДНОЗНАЧНО! Теперь то всё понятно! Получается после прочтения последней записи, eof true не возращает поэтому получается ещё один холостой проход цикла в котором собствено read устанавлиается флаг, ну а так как прочитать уже ничего не можем старая структура и выводится! ХЕХЕ как всё просто! ЕЩЁ РАЗ СПАСИБО! Тему можно закрывать!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++ ya.flex-freelance@yandex.ru Icq - 636-954-303 |
02.06.2012, 01:15 | #7 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Один момент:
Код:
if( Foo()==1 && Bar()==1) { /*что то делаем*/ } Булевое "и" есть истина только и только в том случае, если и Foo()==1 и Bar()==1 Если же Foo() вернёт не_единицу, то условие уже априори false. Не зависимо от того, что вернет второй операнд. А посему, он даже и не будет вычисляться (а зачем делать лишьние движения?) Теперь представим, что Foo() очень тяжелая функция, а Bar() выполняется почти мгновенно. В этом случае, если переставить в булевом выражении функции местами, то смысл не изменится, а производительность резко вырастит. В действительности, если легкая Bar() вернёт false, то тяжелая Foo() даже не будет запущена, что сэкономит и время и память. Итого: есть смысл ставить более легкие процедуры в левой части булевых выражений: Код:
fin.read() обращается к системе, и задействует тяжелую операцию чтения из файла. Если поменять их местами - смысл не изменится, но программулька будет меньше жрать памяти и быстрее бегать. |
02.06.2012, 01:58 | #8 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
Берс, есть похожая уловка..
этот код будет менее эффективней работать Код:
Код:
Спеши медленно.
|
02.06.2012, 02:01 | #9 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
В обоих твоих случаях результат будет одинаковый. |
|
02.06.2012, 09:59 | #10 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
хм..
а если вместо sizeof поставить strlen ?
Спеши медленно.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
void to struct (C++) | slim>>> | Помощь студентам | 1 | 13.01.2011 20:52 |
Struct, union | HeLiO | Общие вопросы C/C++ | 6 | 29.12.2010 12:16 |
Struct | mansp | Общие вопросы C/C++ | 4 | 05.12.2010 20:00 |
Вопрос по Struct | cheblya | Общие вопросы C/C++ | 2 | 06.11.2009 11:42 |
STRUCT() | alexov | Общие вопросы C/C++ | 1 | 13.01.2009 18:13 |