1) gets_s
не является стандартной функцией: по-видимому, она предоставляется компиляторами Microsoft как дополнительная
2) использование fgets
, при необходимости удалите завершающий '\n'
, а если неттрейлинг '\n'
сделка с очень длинным входом
Пример
size_t len;
char buf[1000];
if (fgets(buf, sizeof buf, stdin)) {
buflen = strlen(buf);
if (len) {
if (buf[len - 1] == '\n') {
buf[--len] = '\0'; /* adjust len and remove trailing newline */
} else {
/* something bad hapenned */
if (len == sizeof buf - 1) {
/* possibly large input */
} else {
/* small input */
}
}
} else {
/* no characters read at all, this is a strange occurrance */
}
} else {
/* fgets returned NULL: EOF on stdin? or maybe some error? */
}