Your error check is not going to work. Why? Because if someone enters more than 16 characters then the entire program will get trashed and there is nothing that you can do to avoid it. That's one of the problems with scanf().
What I would do is get the string one character at a time and produce an error on the first character that would overflow the destination character array.