C语言gets()和get_s()函数

C语言gets()和get_s()函数

介绍
gets()可以无限读取,易发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值,由于可以无限读取,所以在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准,标准中删除了 gets()函数,使用一个新的更安全的函数gets_s()替代

用法

gets()用法

#include <stdio.h>   
int main(void)
{
    char str1[5];  
    gets(str1);
    printf("%s\n", str1);
    return 0;
}

gets_s()用法

#include <stdio.h>
#define CH 20
int main(void)
{
    char ch[CH];
    printf("请输入你的名字:\n");
    //gets_s用法:gets_s(buffer,size);
    //推荐用字符数组长度-1作为size(留空'\0')
    gets_s(ch,CH-1);
    printf("这是你的名字:%s\n", ch);
    return 0;
}

特点
gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。

发布了69 篇原创文章 · 获赞 96 · 访问量 5941

猜你喜欢

转载自blog.csdn.net/qq_45163122/article/details/104475955