在C语言中,gets 函数之所以用不了,主要是因为该函数存在安全隐患,已经被弃用。具体来说,gets 函数无法防止缓冲区溢出,这可能导致程序崩溃或受到恶意攻击。 为了替代 gets 函数,你可以使用 fgets 函数。fgets 函数可以安全地从标准输入读取一行字符串,并允许你指定读取的最大字符数,从而避免缓冲区溢出的问题。以下是一个使用
你可以查看编译器的文档,确认是否支持gets()函数。 确保你正确地包含了头文件<string.h>,因为gets()函数的声明在该头文件中。 确保你的输入没有超过目标字符串的长度。如果超过了长度,会导致缓冲区溢出,可能会发生未定义的行为。你可以使用fgets()函数代替gets()函数,并指定目标字符串的长度,这样可以避免缓冲区溢...
在提交问题时,不少接收字符串的时候可以用gets函数(以前确实可以),但由于get函数不提供给出足够长的输入字符串时,避免目标数组缓冲区溢出的手段。 std::gets 于 C++11 被弃用,并于 C++14 移除。 可使用 std::fgets 替代。也就是说现在只要用C++11及以后版本的标准,gets函数都不能再用了 不过,我们可以使用#d...
在较新的C标准中,gets()函数已经被废弃,不再建议使用,因为它存在安全性问题(缓冲区溢出)。取而代之的是使用fgets()函数来读取字符串。fgets()函数可以指定读取的最大字符数,避免了缓冲区溢出的风险。 下面是一个示例代码,用fgets()函数替代gets()函数来获取用户输入的字符串: #include <stdio.h> int main()...
为什么gets语句我..gets函数已经被标记为obsolete,不应该使用。msvc和glibc都已经移除了gets,但mingw暂时还保留着,所以你仍然可以在dev c++中使用gets。即便如此,也不鼓励使用它,应该用
不安全:由于 gets()不能指定输入数据的长度,它无法防止输入的数据过长导致缓冲区溢出。这使得 gets...
求助贴(gets函数..先看下面一段程序(大意是:输出10个学生姓名和成绩,按成绩由高到低排列姓名和成绩,经检验,此程序可运行且合格)如果改写第9行,程序也可运行,但出了一些问题。#include <string.h&
scanf 在缓冲区遗留了一个换行符 被gets接受 在scanf语句之后加一个 fflush(stdin);清除缓冲区就好了
int main(void){ int n;char *p;puts("input number");scanf("%d",&n);p=(char *)malloc(n*sizeof(char));if(p==NULL){ puts("make failed");exit(EXIT_FAILURE);} fflush(stdin);//清空输入缓冲区,否则gets会把之前输入数字后面的回车当做一个字符串输入。gets(p);puts(p);return...