При использовании 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);