Я знаю, как сделать это с кучей памяти, но я пытаюсь избавиться от любого выделения памяти кучи в моем коде.
Я не могу использовать любую библиотеку, которая может мне помочь, это означает: <string>
например.
Как я могу сделать это с использованием выделения памяти в стеке?
int main(void) {
class Animal {
unsigned char nameLength;
unsigned char name[];
setName(unsigned char name[]) {
memcpy(this->name, name, this->length * sizeof(unsigned char));
}
}
Animal dog;
// The value '4' isn't constant, it depends on received data from socket
dog.nameLength = 4;
// Right now I know how many elements will be in dog.name array
unsigned char randomName[dog.nameLength];
// Here will be a for loop, but just for example:
randomName[0] = "B";
randomName[1] = "e";
randomName[2] = "n";
randomName[3] = "/0";
dog.setName(randomName);
// Expected output: dog.name = "Ben\0"
}
Форма для l oop будет выглядеть так:
unsigned char i;
for (i = 0; i < (dog.nameLength-1); i++) {
randomName[i] = packet[i];
}
randomName[i] = 0;