При использовании gets() в C во время компиляции появится следующее предупреждение:

warning: this program uses gets(), which is unsafe.

Функция gets() небезопасна, потому что вы передаёте ей буфер, но не сообщаете, насколько велик буфер на самом деле, и не знаете, насколько большим будет вводимое содержимое. Вводимые данные могут выйти за конец буфера, что приведёт к падению вашей программы.

Решение — использовать вместо неё fgets:

char buffer[bufsize];
fgets(buffer, bufsize, stdin);

Пример:

// 使用 gets()
char buffer[4096];
gets(buffer);
 
// 使用 fgets() 替换 gets()
char buffer[4096];
fgets(buffer, (sizeof buffer / sizeof buffer[0]), stdin);