Linux系统下运行C语言程序使用 gets函数,通常会有警告提示:
warning: the 'gets' function is dangerous and should not be used.
是说,gets 函数的功能危险, 不应该被使用。
导致gets函数警告提示的原因是:
gets不会去检查字符串的长度,如果字符串过长就会导致溢出。如果溢出的字符覆盖了其他一些重要数据就会导致不可预测的后果。
在man手册里也有关于gets这样的警告:
Never use gets(). Because it is impossible to tell without knowing the data in advance how many characters gets() will read, and because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use. It has been used to break computer security.
解决办法
可以用scanf的扫描集来实现这一功能,只要在方括号中写入“^\n”,即:直到输入了回车才停止扫描。