Я разрабатываю программу для среды arduino, в частности, esp8266, и мне нужно подставить часть полученной команды и преобразовать ее в длинную
Пример:
Полученная команда: "HCHP 000527707 /"
Вывод: 527707
Я создал / вдохновил себя на функцию подстроки, которая работает, но каждый раз при запуске запускает кучу кучи, добавляет до ~ 152 байт для полного кадра, который я получил.
char *substr(char *src,int pos,int len) {
char *dest=NULL;
if (len>0) {
char* dest = (char*)calloc(len+1, 1);
if(NULL != dest) {
strncat(dest,src+pos,len);
}
}
return dest;
}
Единственное решение, которое я смог найти после большой отладки, - это и Я знаю, что это плохо и не должно не может быть использовано, как это , но это работает, и нет утечки.
char *substr(char *src,int pos,int len) {
char test[len+1] ;
String(src).substring(pos, pos+len).toCharArray(test,len+1) ;
return test;
}
В любом случае, кто-то может сказать мне, что я сделал неправильно в первой функции.
А как я могу поставить free()
, когда возвращаюсь dest
Не знаю, куда его поставить.