Opened 5 years ago
Closed 4 years ago
#399 closed ожидается проверка (задача сдана)
WW #5
Reported by: | Vavilov Mark | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_c_io | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | → 2.0 |
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
buf[2] << 8
не 0 только из-за integer promotion
в функциях не появилось проверок на ненулевой указатель
поведение программы не донесено до пользователя, нет ни комментария, ни сообщения
101 printf("%ld", cnt);
size_t корректно печатать с помощью "%zu", здесь же используется специфика (в какой именно тип на самом деле раскрывается size_t)
Note: See
TracTickets for help on using
tickets.
Нужно добавить проверки, что указатели ненулевые.
Нужно поправить на допбалл:
fprintf / fwrite / fputc может не получиться, если на файловой системе место кончилось.
Нужно как-нибудь специфицировать поведение программы в таком случае - как минимум сообщать об этом с помощью кода возврата. Для этого стоит либо поменять сигнатуру apply (протащить возможность рапортовать ошибку), либо использовать exit. Кроме того, стоит решить, что делать с частично записанными данными - либо оставить, как есть, либо удалить файл целиком, либо оставить только успешно записанные точки, но в любом случае поведение должно быть донесено до конечного пользователя утилиты либо комментарием в main, либо с помощью --help.
смешание отступов (где-то 1 отступ на scope, а здесь 2 отступа)
Для count лучше использовать size_t в качестве результата (а не int, как сейчас)
69 x = buf[0] + ((buf[1] + (buf[2] << 8)) << 8);
Здесь эксплуатируется integer promotion. Лучше так не делать, а сделать явные касты, это улучшит восприятие кода. Эту и аналогичные операции лучше вынести в отдельные функции, чтобы уменьшить дублирование кода.