5.c: In function ‘getinfo’:
5.c:20:2: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
gets(temp.fname);
警告:不建议使用gets函数。
gets 已被弃用,因为它很危险,可能会导致缓冲区溢出。
解决方案使用 fgets 代替: fgets(temp,sizeof(temp),stdin);
虽然用 gets() 时有空格也可以直接输入,但是 gets() 有一个非常大的缺陷,即它不检查预留存储区是否能够容纳实际输入的数据,换句话说,如果输入的字符数目大于数组的长度,gets 无法检测到这个问题,就会发生内存越界,所以编程时建议使用 fgets()。
fgets() 的原型为:
# include <stdio.h>
char *fgets(char *s, int size, FILE *stream);