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 Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

Нужно добавить проверки, что указатели ненулевые.

Нужно поправить на допбалл:
fprintf / fwrite / fputc может не получиться, если на файловой системе место кончилось.
Нужно как-нибудь специфицировать поведение программы в таком случае - как минимум сообщать об этом с помощью кода возврата. Для этого стоит либо поменять сигнатуру apply (протащить возможность рапортовать ошибку), либо использовать exit. Кроме того, стоит решить, что делать с частично записанными данными - либо оставить, как есть, либо удалить файл целиком, либо оставить только успешно записанные точки, но в любом случае поведение должно быть донесено до конечного пользователя утилиты либо комментарием в main, либо с помощью --help.

 84     if (!strcmp(action, "print")) {
 85             char *fmt = argv[4]; //print format
 86             apply(l, print, fmt);
 87     }

смешание отступов (где-то 1 отступ на scope, а здесь 2 отступа)

Для count лучше использовать size_t в качестве результата (а не int, как сейчас)

69 x = buf[0] + ((buf[1] + (buf[2] << 8)) << 8);
Здесь эксплуатируется integer promotion. Лучше так не делать, а сделать явные касты, это улучшит восприятие кода. Эту и аналогичные операции лучше вынести в отдельные функции, чтобы уменьшить дублирование кода.

comment:2 Changed 4 years ago by Vavilov Mark

Type: ожидаются исправленияожидается проверка
Version: 2.0

comment:3 Changed 4 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed

buf[2] << 8
не 0 только из-за integer promotion

в функциях не появилось проверок на ненулевой указатель

поведение программы не донесено до пользователя, нет ни комментария, ни сообщения

101         printf("%ld", cnt);

size_t корректно печатать с помощью "%zu", здесь же используется специфика (в какой именно тип на самом деле раскрывается size_t)

Note: See TracTickets for help on using tickets.