Your use of strlen()
is wrong, that is reliant on the contents of the buffer being a valid string; it doesn’t clear the entire buffer.
Just use memset()
with sizeof
:
memset(buffer, 0, sizeof buffer);
Note that sizeof
is not a function, so no parentheses are needed (or should be used, in my opinion) for cases like these.
If your C library doesn’t include memset()
, a plain loop can of course be used:
for(size_t i = 0; i < sizeof buffer; ++i) buffer[i] = 0;
If you want to clear just the part that is used, and know that it’s a valid string, your code works of course. I probably wouldn’t have used backwards looping since I find that unintuitive but that’s just me.
Note: if this buffer is for strings, it should be changed to have type char
, not uint8_t
.