Al usar gets() en C, al compilar aparece la siguiente advertencia:
warning: this program uses gets(), which is unsafe.
gets() no es seguro porque le das un búfer, pero no le dices cuán grande es ese búfer, ni sabes cuán grande será la entrada. La entrada puede sobrepasar el final del búfer, provocando que tu programa se bloquee.
La solución es usar fgets en su lugar:
char buffer[bufsize]; fgets(buffer, bufsize, stdin);
Ejemplo:
// 使用 gets() char buffer[4096]; gets(buffer); // 使用 fgets() 替换 gets() char buffer[4096]; fgets(buffer, (sizeof buffer / sizeof buffer[0]), stdin);