gets,gets_s,fgets函数

时间:2021-01-27 01:48:19

这次就说一下,gets(),gets_s(),fgets(),;;;;【在某一篇博客上看到的】

C的标准库gets函数不对接受字符串的buffer进行边界检测,会造成越界,从而产生bug;

fgets函数,数获取的字符串与gets函数获取的不一样,fgets函数获取的字符串会在buffer里面保留换行符,而gets函数不会;也就是说最后一个是换行符

gets_s函数,可以像gets一样不会获取换行符,也不会有gets的越界问题。所以gets_s函数是一个标准库扩展函数,一个可选项;所以就不知道这个gets_s函数在各个编译器下的支持情况如何!

gets,fgets,gets_s的用法

1.gets()

char s[10];
gets(s);

2.fgets()

注意他会读入换行,不行你试一下这一段程序;;;;;;(很伤)

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char input[10];
    while (fgets(input,10,stdin) != NULL)
    {
        printf("%s",input);
    }
}

3.gets_s()

不会;也不用;

来自某大牛【萌新不懂】:

个人不推荐使用ms提供的函数
且gets_s第二关参数是 缓冲区大小