任何人都可以告诉我为什么get(abc)与char []一起使用但不与int一起工作?
int abc;
char name[] = "lolrofl";
printf("Hello %s.\n",name);
printf("\n >> ");
fflush(stdin);
gets (abc);
printf("\n die zahl ist %i.\n",abc);
system("Pause");
return(0);
Run Code Online (Sandbox Code Playgroud)
Mic*_*yan 11
gets()的原型是:
char* gets(char *s);
请注意,该函数不会只读取单个字符并将其放在s中; 它实际上将整个字符串读入s.但是,由于gets()没有提供指定要读取的最大字符数的方法,因此实际上可以读取s中的字符数多于为s分配的字节数.因此,此功能是一个严重的缓冲区溢出漏洞,您不应该使用此功能.还有其他更安全的函数,允许您读取用户的输入,如fgets()和getc().
如果您使用的是C++,那么使用C++ I/O流库(std :: cin,std :: cout,std :: ostream,std :: istream,std :: fstream等)是一种更好的方法.执行输入/输出比使用这些其他功能.
该函数获得()是非常危险的,其实,在我的开发和编码自定义搜索引擎,我已经采取了促销上获得,而不是警告其他几个这样的功能使用它!