I don’t understand. If you’re doing length checks before “strcpy()”, then you can easily call “memcpy()” instead. And.. memcpy() is faster because it can go word at a time. So, why would anyone ever need “strcpy()”?
Like all things, never say "for all" or "always" but almost all strings can be buffers packed with a size in a struct like in the top comment.
The 4KB of RAM in my microcontroller would appreciate those extra 4 bytes (or 3) used for every string.
One byte is the actual overhead for strings.
I really hope people aren't seriously doing string parsing on microcontrollers.
String parsing is sometimes necessary, and it could be as simple as formatting and sending logs lines through an UART.