4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
|
|||||||||||
1 | |||||||||||
Вопрос про возврат значения из функции ("Функция должна возвращать нулевое значение, если чтение прошло успешно, и -1 в противном случае")03.02.2011, 22:25. Показов 3274. Ответов 7
Метки нет Все метки)
(
Из описания программы:
1) "чтение прошло успешно" - имеется в виду, что файл открылся? или какая-то еще проверка? 2) "функция должна возвращать ... -1 в противном случае" - какой смысл в том, что эта функция возвращает 0 или -1? т.е. как и где можно попробовать использовать значение, которое вернула функция? Поясните, пожалуйста.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
03.02.2011, 22:25 | |
Ответы с готовыми решениями:
7
Ошибка "функция должна возвращать значение"
|
![]() 5052 / 3113 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
|
|
03.02.2011, 22:34 | 2 |
1) Да, подозреваю, именно проверка на открытие файла.
2) Мы можем проверять, правильно ли отработала функция, т.е. заполнила ли она output_item, и можем ли мы эти данные в дальнейшем использовать. В случае неудачи, мы, например, можем предоставить пользователю выбор, попробовать ли считать данные ещё раз или завершить программу.
1
|
![]() 5826 / 3477 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
04.02.2011, 17:25 | 3 |
Да, здесь проверяется именно открытие файла, хотя это не соответсвует спецификации функции. Сказано, что
но функция не обрабатывает ситуации, когда файл открылся, а fseek или fread завершились с ошибкой, т.е. не обрабатывается ошибки в работе с успешно открытым файлом. Так что в строках 12 и 13 надо бы добавить проверку возращаемых значений соответствующих функций, а строки 11 и 14 вообще хорошо было бы вынести за пределы функции.
1
|
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
|
|||||||||||
05.02.2011, 01:58 [ТС] | 4 | ||||||||||
Спасибо большое за комментарии!
Переделала код с учетом вышесказанного, скажите, пожалуйста, если есть еще какие-то недочеты:
0
|
![]() 5826 / 3477 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
05.02.2011, 05:43 | 5 |
chaosfall, есть несколько мелких замечаний. Я бы передавал в функцию указатель на уже открытый файловый поток (это бы сделало функцию более универсальной, т.к. можно было бы обрабатывать файлы с произвольным именем, а не только с именем "file", которое сейчас жестко "зашито" в теле функции). Непонятно, почему number передается по ссылке, а не по значению, если его модификация внутри функции не подразумевается. Сообщения об ошибке внутри самой функции, ИМХО, излишни, т.к. они дублируются уровнем выше в вызывающей функции.
2
|
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
|
||||||
06.02.2011, 01:04 [ТС] | 6 | |||||
Если я правильно понимаю этот комментарий, то нужно просто вынести открытие и закрытие файлового потока за пределы функций?
0
|
![]() 5826 / 3477 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
06.02.2011, 06:43 | 7 |
Да, это я и имел в виду. А зачем убирать fseek из функции readStructure? Тогда передаваемый параметр number в функции никак не используется.
1
|
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
|
||||||
06.02.2011, 15:18 [ТС] | 8 | |||||
Хм, совсем не помню, как fseek переместилось за пределы функции.. вернула на место)
И еще выделила функцию вывода структуры на консоль, чтобы не захламлять основное тело программы - функцию main. Nameless One, спасибо большое за ценные советы.
0
|
06.02.2011, 15:18 | |
Помогаю со студенческими работами здесь
8
Вывести на экран "да", если числа имеют одинаковые знаки, в противном случае вывести "нет"
Компилятор пишет "func должна возвращать значение": как исправить ошибку? Ошибка "operator[]: должна возвращать значение" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |