Skip to content

Conversation

@CHE77
Copy link

@CHE77 CHE77 commented Oct 17, 2022

Если использовать кириллицу с меню то размер строки меню получается больше чем 21. То есть размер buffer надо заранее считать. Далее, что запись в buffer идет пока buffer[i++] != NULL то есть таким образом будут проверяться ячейки вне массива, и не факт что ячейки памяти там будут пустые. Они будут затираться и вызывать непонятные глюки. У меня затирались значения другого массива.

Если использовать кириллицу с меню то размер строки меню получается больше чем 21. То есть размер buffer надо заранее считать.
Далее, что запись в buffer идет пока buffer[i++] != NULL то есть таким образом будут проверяться ячейки вне массива, и не факт что ячейки памяти там будут пустые. Они будут затираться и вызывать непонятные глюки. У меня затирались значения другого массива.
@CHE77 CHE77 requested a review from AlexGyver as a code owner October 17, 2022 21:13
@GyverLibs
Copy link

Увы, почти всё сделано ещё более неправильно :)

размер buffer надо заранее считать

Здесь согласен, есть функция strlen_P

не факт что ячейки памяти там будут пустые

Как раз таки факт, в конце строки в языке Си всегда есть нулевой символ

namesSizes[0] = sizeof(i0);
namesSizes[1] = sizeof(i1);
....

Зачем делать работу компилятора, когда есть цикл for и strlen_P()

buffer[i] = (char)(pgm_read_byte(ptr++));

Опять же есть готовая функция strcpy_P() (урок), не нужно переписывать строки вручную.
Это претензия скорее к изначальному автору кода (Nich1con)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants