| These shouldn't be used either (_s are available in C11, _l tend to be locale-parameter thread-safety, and _r have sizes/state for bounds/thread-safety): - strtok -> strtok_r / strtok_s - asctime -> strtok_r / strtok_s - gmtime -> gmtime_r / gmtime_s - localtime -> localtime_r / localtime_s - ctime -> ctime_r / ctime_s - dirname -> dirname_r - basename -> basename_r - devname -> devname_r - readdir -> readdir_r - ttyname -> ttyname_r - gamma -> gamma_r - lgamma -> lgamma_r - lgammaf -> lgammaf_r - lgammal -> lgammal_r - atoi -> atoi_l - atof -> atof_l - atol -> atol_l - atoll -> atoll_l - gets -> gets_s - scanf -> scanf_l / scanf_s - fscanf -> fscanf_l / fscanf_s - sscanf -> sscanf_l / sscanf_s - tmpfile -> tmpfile_s - fopen -> fopen_s - getenv -> getenv_s - strdup -> strndup - strcmp -> strncmp - strlen -> strnlen - (Multibyte/wide conversion functions without mbstate_t parameter) - wcslen / wscnlen -> wcsnlen_s - wcsncasecmp / wcscasecmp_l / wcsncasecmp -> wcsncasecmp_l - strcasecmp / strcasecmp_l / strncasecmp -> strncasecmp_l - bzero (use explicit_bzero, in some cases) - calloc, realloc -> reallocarray (for arrays of non-byte items) - memmove -> memmove_s - strncat -> strncat_s - strncpy -> strncpy_s - srand / rand -> rand_r There are others that are platform-specific. Thread-safety, internal mutable state (not thread-safe), and buffer-overflows are the primary concerns that aren't necessarily applicable in all situations. |
[0] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1967.htm#mi...