![]() |
|
Модераторы: bsa |
![]()
|
|
| vitalyisaev2 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.9.2010 Репутация: нет Всего: нет |
Здравствуйте, я написал программу по работе с динамическим массивом. Программа выполняет следующие действия:
1. Открывает входящий файл. 2. Считает количество строчек в нём -> count. 3. Создает динамический массив, состоящий из count элементов. 4. Считывает данные из входящего файла и заполняет ими этот массив. 5. Печатает массив на экран.
Проблема в 5 пункте - она печатает не то, что было в исходном файле. Появляются какие-то одинаковые цифры. Может, она неправильно заполняет динамический массив данными из файла? Или неправильно его выводит на экран? На вход подается текстовый файл:
результат выполнения программы:
В чём причина этой ошибки? Заранее спасибо. |
||||||
|
|||||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
вы когда считаете количество строк после этого не закрываете файл. Т.о. "файловый указатель" будет смотреть на конец файла и при считывании вам будет даваться мусор. Надо проверять всегда на ошибки чтения 8) Вам просто нужно зкрыть-открыть файл перед считыванием инфы.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
vitalyisaev2, вся эта красота не аналог ли этой черной магии?
|
|||
|
||||
| vitalyisaev2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.9.2010 Репутация: нет Всего: нет |
mrbrooks, спасибо, но я пока до классов не добрался... jonie, спасибо, ошибка понятна! |
|||
|
||||
| vitalyisaev2 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.9.2010 Репутация: нет Всего: нет |
jonie, то есть надо просто добавить после работы счётчика вот эти строчки, как бы заново инициализировать поток?
или создать новый поток на тот же файл?:
Оба случая компилируются, но выдают ошибки при работе. Это сообщение отредактировал(а) vitalyisaev2 - 8.9.2010, 10:46 |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Но при этом cout ты используешь (а это объект класса std::ostream). Зачем мешаешь в кучу ввод/вывод stdio и iostream? Пользуйся чем-то одним.
Кстати, iostream.h и stdio.h - устаревшие заголовочные файлы (для С++), сейчас они называются iostream и csdtio (без расширения). Правда, в этом случае нужно будет писать не cout и cin, а std::cout и std::cin (std - стандартное пространство имен), или добавить после всех инклюдов using namespace std; (не рекомендуется). Это сообщение отредактировал(а) bsa - 8.9.2010, 10:59 |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
vitalyisaev2, не надо вообще считать count. Читайте потихоньку файл и при необходимости расширяйте свой массив. Раз вы пишите почти на си, откажитесь от new/delete в пользу malloc/realloc/free.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Сделай просто rewind(f1); перед вызовом fill_array |
||||
|
|||||
| vitalyisaev2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.9.2010 Репутация: нет Всего: нет |
djamshud,
xvr, bsa, огромное спасибо за советы. Прога в этом месте заработала. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
| pilot1440 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 15.4.2010 Репутация: нет Всего: нет |
|
|||
|
||||
| vitalyisaev2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 7.9.2010 Репутация: нет Всего: нет |
ок
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |