Opened 5 years ago
Closed 4 years ago
#368 closed ожидается проверка (задача сдана)
WW_io
Reported by: | Roman Venediktov | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_c_io | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
write_text_number неудачное название, из него невозможно угадать, что же функция делает
Сейчас в целом все хорошо.
Нужно поправить на допбалл:
fprintf / fwrite / fputc может не получиться, если на файловой системе место кончилось.
Нужно как-нибудь специфицировать поведение программы в таком случае - как минимум сообщать об этом с помощью кода возврата. Для этого стоит либо поменять сигнатуру apply (протащить возможность рапортовать ошибку), либо использовать exit. Кроме того, стоит решить, что делать с частично записанными данными - либо оставить, как есть, либо удалить файл целиком, либо оставить только успешно записанные точки, но в любом случае поведение должно быть донесено до конечного пользователя утилиты либо комментарием в main, либо с помощью --help.
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
Ошибки в fprintf/... всегда детектируются просто if-ами?
Опциональные параметры в --help пишутся в {} или <>?
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Ошибки в fprintf/... всегда детектируются просто if-ами?
вопрос не понял, сейчас все правильно
Опциональные параметры в --help пишутся в {} или <>?
в общем-то на усмотрение автора. Лишь бы было понятно.
82 int counter(intrusive_node *node, void *data) { 83 assert(node != NULL); 84 assert(data != NULL); 85 (void) node; 86 *((int *) data) += 1; 87 return 1; 88 } 89 90 void count_points_number(intrusive_list *l) { 91 assert(l != NULL); 92 size_t count = 0; 93 apply(l, &counter, (void *) &count); 94 printf("%lu\n", count); 95 } 96
в одном месте int, в другом size_t.
size_t корректно печатать с помощью "%zu", иначе есть предположение о том, в какой тип size_t раскрывается.
Вам стоит поработать над английским, сейчас это так называемый runglish.
write_bin, write_text стоило бы реализовать через apply.
copy-paste отвратителен!
в этом месте не очень сложно декомпозировать, что уменьшит объем кода, повысит его читаемость, надежность, переиспользуемость
Да и вообще было бы прекрасно вынести содержимое каждого случая в именованную функцию.
main сократится, читать станет приятнее.
BYTES_IN_NUMBER - отличная идея.
256 тоже стоит именовать (BYTE ?)
fopen может не сработать,
FYI https://stackoverflow.com/questions/3353214/fopen-without-fclose-in-c
Если бонус не сделан не из-за нехватки времени/желания, а потому что непонятно - задайте вопрос!