c语言的gets函数编译不成功阿,很短的程序?

C语言的gets函数运行不了总是出现’gets’was not declared in this scope

C语言的gets函数一般包含在stdio.h头文件里,如果没有包含比头文件那可能会有问题。第二种情况包含了还出问题,说明你的编译器已经不支持这个函数了,这个函数非常不安全,容易造成溢出,建议换成fgets函数。

函数原型

char *fgets(char *buf, int bufsize, FILE *fp);

数解释:

参数一是输入字符串存放地址,

参数二是存放地址最大容量,

参数三是从哪里输入,可以从文件也可从输入设备,如果从输入设备输入这个参数可以写成stdin,如果从文件输入此参数为文件指针。

返回值

输入成功返回参数一,失败返回NULL.

补充知识:

为什么gets不让用呢,我们可以看它的原型:char *gets(char *buf);

这个函数可以一直输入知道换行或者EOF,它并不考虑buf空间是否足够大能放下,这就容易导致溢出,有些别有用心的人就会利用这个漏洞去攻击你的程序。

而fgets可以通过第二参数保证不会读入超过buf空间的字符。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-06-24
C语言的gets函数一般包含在stdio.h头文件里,如果没有包含比头文件那可能会有问题。第二种情况包含了还出问题,说明你的编译器已经不支持这个函数了,这个函数非常不安全,容易造成溢出,建议换成fgets函数。函数原型:char *fgets(char *buf, int bufsize, FILE *fp);参数解释:参数一是输入字符串存放地址,参数二是存放地址最大容量,参数三是从哪里输入,可以从文件也可从输入设备,如果从输入设备输入这个参数可以写成stdin,如果从文件输入此参数为文件指针。返回值:输入成功返回参数一,失败返回NULL.补充知识:为什么gets不让用呢,我们可以看它的原型:char *gets(char *buf);这个函数可以一直输入知道换行或者EOF,它并不考虑buf空间是否足够大能放下,这就容易导致溢出,有些别有用心的人就会利用这个漏洞去攻击你的程序。而fgets可以通过第二参数保证不会读入超过buf空间的字符。
第2个回答  2022-06-24
C语言的gets函数一般包含在stdio.h头文件里,如果没有包含比头文件那可能会有问题。第二种情况包含了还出问题,说明你的编译器已经不支持这个函数了,这个函数非常不安全,容易造成溢出,建议换成fgets函数。函数原型:char *fgets(char *buf, int bufsize, FILE *fp);参数解释:参数一是输入字符串存放地址,参数二是存放地址最大容量,参数三是从哪里输入,可以从文件也可从输入设备,如果从输入设备输入这个参数可以写成stdin,如果从文件输入此参数为文件指针。返回值:输入成功返回参数一,失败返回NULL.补充知识:为什么gets不让用呢,我们可以看它的原型:char *gets(char *buf);这个函数可以一直输入知道换行或者EOF,它并不考虑buf空间是否足够大能放下,这就容易导致溢出,有些别有用心的人就会利用这个漏洞去攻击你的程序。而fgets可以通过第二参数保证不会读入超过buf空间的字符。
第3个回答  2021-12-04
说明你的gets函数根本没有声明啊,去定义一个函数在实现就好了
第4个回答  2021-07-24
应该是头文件没有引用,或者头文件出问题了
相似回答