得到(变量)

bor*_*lee 1 c++ gets

任何人都可以告诉我为什么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等)是一种更好的方法.执行输入/输出比使用这些其他功能.

该函数获得()是非常危险的,其实,在我的开发和编码自定义搜索引擎,我已经采取了促销上获得,而不是警告其他几个这样的功能使用它!