String functions especially are a good way to get into the C way of thinking. Since C's approach to strings is unique.
I also learned a lot by reading manpages of libc functions or Unix utilities and thinking about how they were implemented, and writing my own little versions.
I'd recommend OpenBSD libc. https://github.com/openbsd/src/tree/master/lib/libc
String functions especially are a good way to get into the C way of thinking. Since C's approach to strings is unique.
I also learned a lot by reading manpages of libc functions or Unix utilities and thinking about how they were implemented, and writing my own little versions.