Sure, there are lots of alternatives. However, IMO a name using "fgets" makes the experienced reader to instinctively assume a certain behavior regarding the resulting string (keeping the terminating '\n', if there's room for the inputted string) while a name using "gets" instinctively implies that the terminating '\n' is always dropped.