在提交问题时,不少接收字符串的时候可以用gets函数(以前确实可以),但由于get函数不提供给出足够长的输入字符串时,避免目标数组缓冲区溢出的手段。 std::gets 于 C++11 被弃用,并于 C++14 移除。 可使用 std::fgets 替代。也就是说现在只要用C++11及以后版本的标准,gets函数都不能再用了 不过,我们可以使用#d...
不安全:由于 gets()不能指定输入数据的长度,它无法防止输入的数据过长导致缓冲区溢出。这使得 gets...
为什么gets语句我..gets函数已经被标记为obsolete,不应该使用。msvc和glibc都已经移除了gets,但mingw暂时还保留着,所以你仍然可以在dev c++中使用gets。即便如此,也不鼓励使用它,应该用
gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。本函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这...
并且没有清空输入缓冲区,gets()可能会读取到缓冲区中剩余的数据。这会导致你的输入不符合预期。
gets() 函数从标准输入读入 一行文本,直到读到 新行符 或 EOF 字符 之前,不会停止读入文本。也就是:gets() 不检查边界。因此,当变量空间 小于 一行字符串 时, 使用 gets() 会造成 溢出,程序出错。例如:include<stdio.h> int main( ){ char s[5];printf ("input one line: ");...
在C语言中为什么gets函数有的时候不推荐用? 编译的时候编译器都会提示warning? 这是关系到信息安全领域的一些知识。会有这样的一个情况: char a[12]; gets(a); 当你输入的东西远比12要长时,他还是会接收并写入空间。这样就溢出了,覆盖掉后面的相应空间。也就是说他写入了
请问为什么gets函..刚才又试了一下,发现加上指针后的确不能正常输入还显示,翻了下书,书上只说有两种字符串输出方法:1.字符数组2.字符指针。我们这种方式是两种方法的混用,所以才出问题的
gets_s(a[N],80),函数中,第一个参数为数组,第二个参数为数组最大元素个数,在vs中需要写这么一个参数
gets是读入整行 用来输入字符串的。比如 你输入的是12345678 那么 用scanf a=12345678 如果是用gets a的地址上存的是"12345678"这个字符串 需要9个字节。而a作为long int只有4个字节 自然出错了。