C で gets() を使用すると、コンパイル時に次のような警告が表示されます:

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);