gpt4 book ai didi

c++ - 得到(变量)

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:08:58 28 4
gpt4 key购买 nike

谁能告诉我为什么 gets(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);

最佳答案

gets() 的原型(prototype)是:

char* gets(char *s);

请注意,该函数不会只读取一个字符并将其放入 s;它实际上将整个字符串读入 s。但是,由于 gets() 不提供指定要读取的最大字符数的方法,因此实际上这可以将比分配给 s 的字节数更多的字符读入 s。因此,这个功能是一个严重的buffer overflow vulnerability ,你不应该使用这个功能,永远。还有其他更安全的功能,可让您读取用户的输入,例如 fgets()getc() .

如果您使用的是 C++,则使用 C++ I/O Stream Library (std::cin、std::cout、std::ostream、std::istream、std::fstream 等)是一种比使用这些其他函数更好的执行输入/输出的方法。

函数 gets() 非常危险,事实上,在我的 development and coding custom search engine 中, 我在 gets 上做了促销以及其他几个警告不要使用它的此类功能!

关于c++ - 得到(变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2693774/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com