| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Вывод из файла структуры. |
| Автор: toxx 19.4.2009, 11:44 | ||||
| Хотел опробовать средства fread fwrite.Нашел программу базы данных, ввод работает нормально, а вывод косячит почемуто...(выводит только 1 запись,при наличии в файле допустим 3х).Никак не пойму почему.Просмотрел имеющиеся темы, попробовал вывод переписать из других тем(не помогло). Функция вывода из файла.
Сама программа
|
| Автор: nubliK 20.4.2009, 05:28 | ||||
Исходный твой
Я привык использовать потоки ввода вывода - поэтому не пинай
помогло? |
| Автор: mrbrooks 20.4.2009, 09:43 |
| nubliK, есть подозрение камрад - что автор пишет на С. |
| Автор: zim22 20.4.2009, 09:57 |
вы считаете, что написали эквивалентный код? |
| Автор: toxx 20.4.2009, 16:46 |
| nubliK Я сам использую потоки))Поэтому сделал без проблем это задание, а один человек делает через средстава ввода/вывода Си а Си++, отсюда у неё стока гемороя.Я сам попытался вникнуть в эту писанину вродебы все по нормально, на форуме копался нашел варианты вывода из файла не помогло( mrbrooks По поводу Си выше)) zim22 Да уж неособо эквивалентный средства разные) |
| Автор: zim22 20.4.2009, 17:12 |
результаты разные. код, предложенный nubliK'ом не читает структуру. он читает строку текста. |
| Автор: toxx 20.4.2009, 19:48 |
| zim22 Да я понимаю, просто хотелосьбы чтобы не потоками было сделано, fread fwrite.Потокамибы ябы сам переписал)А когда делаешь fread fwrite выводит только одну запись из файла при наличии допустим 3х( |
| Автор: zim22 20.4.2009, 19:50 |
| toxx, я могу вам посоветовать упростить программу до "не-могу" и разобраться с простейшим примером. т.е. возьмите и напишите очень простую программу с нуля. разберитесь, как работают функции fread, fwrite |
| Автор: toxx 20.4.2009, 20:15 |
| zim22 Хорошо =) |
| Автор: nubliK 21.4.2009, 02:22 | ||||
| to mrbrooks я это понял. просто проще хотелось. zim22 - а разве файл не будет текстовый? Ну раз за потоки отпинали по полной - тогда попробуй из этого примера что нибудь сотворить
взято здесь http://ru.wikipedia.org/wiki/Feof
http://www.cplusplus.com/reference/clibrary/cstdio/feof/ |
| Автор: nubliK 21.4.2009, 03:27 |
| И еще! У меня твоя программа заработала легко, но только под Dev-C++ и как то очень странно - в результате она показывает из файла последнюю запись дважды и запрос на дату рождения, должность и заработную плату выплевывает разом, а не последовательно - могу прислать тебе скрин как оно работает. Я выкинул функцию clrscr() потому что компил(Dev-C++) ругался. описания ее я так и не нашел в твоем исходнике. Студия исходник не осилила - почему - понятия не имею (как то они все там лихо стандартизировали и теперь старые функции Си либо не определены либо определены но не в том значении как было раньше). |
| Автор: toxx 21.4.2009, 17:33 | ||
Могу сказать еще больше, у того кто писал эту программу, она спрашивает только первые 2 поля при создании, пользуемся одним компилятором, а результат разный(У меня спрашивает всё, только вывод косячит).Вобщем это чтото не понятное.Человек уже неделю мучается с этим ефом.Конечно попробую что ты нашел,только вродебы пробовали это).Спасибо, что запустил программу. |
| Автор: zim22 21.4.2009, 17:44 | ||
это похоже на считывание текста? подсказка: это считывание в бинарном режиме структуры.
|
| Автор: Dov 21.4.2009, 19:19 | ||
| Б-ррррр, кошмар какой... Даже не знаю с чего начать... Ладно, сделаем так. toxx, вот тебе примерчик твоей проги в облегчённом виде, разбирайся. Я отметил места, где сделал изменения, остальное ты сам должен понять. Скажу только, что если ты спрашиваешь пользователя о количестве записей, то ты должен организовать массив структур, соответсвующего размера. Я, для примера, взял массив из трёх структур, а тебе,возможно, прийдётся динамически создавать.
|
| Автор: toxx 21.4.2009, 21:46 |
| Dov Спасибо за проделанную работу. f = fopen( name, "rb" ) Проблема была в том как открыт файл.Спасибо, всё понятно=) |
| Автор: nubliK 22.4.2009, 01:22 |
| Да! zim22 не похоже =) я исходил из той мысли что файл блокнотом открылся и читался нормально в строчку. - так можно дойти до чего угодно только не до сути. Ошибку понял. Спасибо за подзатыльник. |