по длине. Один из элементов char id_channel[12][8]; Массив строк. В чем ошибка когда делаю memcpy(&flash_settings.id_channel[pin-1][0],buf,strlen(buf)); Всегда строка начинается с 01 позиции. И последний, 8-ой символ перелазит в 0 элемент следующей строки?
Выравнивание везде верное?
И какой тип у буфф
вот как раз в этом и вопрос в выравнивании.
char *buf;
Ну принудительно его в выравнивание сделайте
А что под указателем находится?
buf указывает верно на первый символ "t" но почему-то этот символ не ложится в idchannell[0][0] а ложится в [0][1]
А как вы находите этот указатель на "т"
Я не знаю как работает мемкопи, возможно оно требует выравнивания, если вы тыкаете в произвольное место в строке то ничего не выйдет
ну грубо говоря его возвращает мне функция buf=get_http_param_value((char *)uri,"val"); uint8_t * get_http_param_value(char* uri, char* param_name)
выравнивание структур. Я об этом слышал но нужно ли оно при побайтных операциях то
Не факт что тут беда в структуре, может беда в невыравненом буфере(который выравнять не выйдет)
buf2=flash_settings.id_channel[pin-1]; memcpy(buf2,buf,strlen(buf)); беда наверное в структуре все же. buf2 имеет значение адреса [0][1] элемента а не [0][0]
Обсуждают сегодня