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