You must use strcpy (if you know the length of the input) or a safe function instead.
A lot of the other answers made the same mistake of leaving un-terminated strings, a major source of security vulnerabilities.
The correct way is to use a safe string copy function, like StringCbCopy or roll your own (albeit not as robust):
// Copy at most n-1 characters to dst, truncating if strlen(src) > n-1
// and guaranteeing NUL-termination.
void safe_strcpy(char *dst, const char *src, size_t n) {
strncpy(dst, src, n-1);
dst[n-1] = 0; // Guarantee NUL-termination.
}
Then you may use it as follows
void f(const char *title, const char *author) {
BookType book;
safe_strcpy(book.title, title, sizeof book.title);
safe_strcpy(book.author, author, sizeof book.author);
}