Bei Verwendung von gets() in C erscheint während der Kompilierung die folgende Warnung:

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

gets() ist unsicher, weil man ihm einen Puffer übergibt, ihm aber nicht sagt, wie groß der Puffer tatsächlich ist, und auch nicht weiß, wie groß der eingegebene Inhalt sein wird. Der eingegebene Inhalt kann über das Ende des Puffers hinausgehen und zum Absturz Ihres Programms führen.

Die Lösung besteht darin, stattdessen fgets zu verwenden:

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

Beispiel:

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