今上午用Xcode 写一个简单地程序,程序里面用到了gets()这个函数,在run之后,终端下面 给出了警告.
查阅资料之后,才明白.gets() 函数则是从标准输入stdin读取一个字符串,遇到换行或结束时候终止.如果输入的字符数超过了空间的做大限度(也就是缓冲区溢出),
超出的数据会将继续写入到堆栈中把之前的数据给覆盖掉.
建议是: char * fgets (char * str, int num, FILE *stream);
用fgets()函数替代gets函数, fgets()函数是从流stream中读入最多num个字符到字符数组str中,当遇到换行符时,或读到num-1个字符时停止.并且在结尾自动加上'\0'空字符.