Guy seems a bit new to C.
pointers-to-structs ARE pointers-to-objects. That's the default way to operate on objects in a huge amount of code.
Don't use strncpy(), if it hits the limit it doesn't end the copy with NUL, causing random crashes.
Quite a few people have concluded that generally, despite the standard library using them, NUL-terminated C string were not the Right Way and it's better to have a struct with the pointer and a size_t length (and perhaps a size_t representing the possibly larger allocated length). This eliminates NUL handling, and strlen() as well and since everything can cheaply know the length, can be the basis of more secure code.