In C11(ISO/IEC 9899:201x), gets()
has been removed. (It's deprecated in ISO/IEC 9899:1999/Cor.3:2007(E))
In addition to fgets()
, C11 introduces a new safe alternative gets_s()
:
C11 K.3.5.4.1 The
gets_s
function#define __STDC_WANT_LIB_EXT1__ 1 #include <stdio.h> char *gets_s(char *s, rsize_t n);
However, in the Recommended practice section, fgets()
is still preferred.
The
fgets
function allows properly-written programs to safely process input lines too long to store in the result array. In general this requires that callers offgets
pay attention to the presence or absence of a new-line character in the result array. Consider usingfgets
(along with any needed processing based on new-line characters) instead ofgets_s
.