咱先不谈多线程竞争、空指针、野指针、数字溢出这些常见的坑,我们就拿很多人盯着的“边界检查”来说。 char *gets(char *s); 为什么 gets 函数从根本上就是不安全的?因为它读取输入时不知道提供的缓冲区有多大,只能一直写入缓冲区,直到碰到换行符或 EOF。