Чтобы иметь более чистый способ проверки определенных функций, я хотел бы провести тесты по функции fclose
. Но у меня была проблема при попытке написать и перечитать образ растрового изображения.Неисправность проверки fclose возвращаемое значение
На самом деле, у меня была ошибка произошедшей при тестировании fclose
так:
assert(fclose(bmp_image) != EOF);
Хотя следующий код не дает ошибку:
int closing_ok = fclose(bmp_image);
assert(closing_ok != EOF);
С большим количеством тестов, я видел это разница происходит только в режиме записи, но не в режиме чтения. Нормально ли такое различие происходит? Может ли кто-нибудь объяснить мне эту разницу?
EDIT: Я попытался получить ошибку смысл с этим кодом:
if(fclose(output_file) != EOF) {
printf("ERROR: %s\n", strerror(errno));
}
Но это также хорошо здесь и нет ошибок.
Что вопрос именно? Разве это просто не вызвало? – StoryTeller
@StoryTeller Я полагаю, что это так. Он может не закрыть файл правильно ... Это не так уж и важно, я просто не понимаю этого поведения. – baptiste
Ваш тест в 'if (fclose (output_file)! = EOF)' должен, вероятно, быть 'if (fclose (output_file) == EOF)' для печати причины ошибки. – Gerhardh