C语言如何应⽤ gets()函数?

本文详细介绍了gets()函数的使用方法,包括如何接收用户输入并输出,同时指出其存在的安全风险,如缓冲区溢出,并推荐使用fgets()函数作为替代。

一、问题

        输⼊字符串使⽤的是 gets()函数,其作⽤是将读取的字符串保存在形式参数 str 变量中。那么该如何使⽤该函数呢?

二、解答

        gets()函数将⼀直读取字符串,直到出现新的⼀⾏为⽌。其中,新的⼀⾏的换⾏字符将会转化为字符串中的空终⽌符' \0 '。gets()函数的定义如下。

char *gets(char *str);

        在使⽤ gets()函数前,要为程序加⼊头⽂件 stdio.b。其中,str 字符指针变量为形式参数。例如,定义字符数组变量 ch,然后使⽤ gets()函数获取输⼊字符的⽅式如下。

gets(ch);

        在上⾯的代码中,ch 变量获取到了字符串,并将最后的换⾏符转化成了终⽌字符。 使⽤字符串输⼊函数 gets()获取输⼊信息的程序如下。

#include <stdio.h>
int main()
{
    char ch[30];
    gets(ch);
    puts(ch);
    return 0;
}

        (1)因为要接收输⼊的字符串,所以要定义⼀个可以接收字符串的变量。在上述代码中,定义 ch 为字符数组变量的标识符。有关字符数组的内容将在后⾯的章节介绍,在此只需知道此变量可以接收字符串即可。

        (2)调⽤ gets()函数,其中参数为定义的 ch 变量。调⽤该函数时,程序会等待⽤户输⼊字符;当⽤户输⼊完字符并按 Enter 键确定时,gets()函数获取字符结束。

        (3)使⽤字符串输出函数 puts()将获取后的字符串进⾏输出。

输出结果如下

Hello world
Hello world

注意

   gets()函数由于存在安全风险(无法限制读取字符串的长度,可能导致缓冲区溢出),在C11标准
中已被废弃。现代C编程推荐使用fgets()函数替代。

 三、总结

        从上⾯可以看出,当输⼊的字符串中含有空格时,输出仍为全部字符串。这说明 gets()函数并不以空格作为字符串输⼊结束的标志,⽽只以回车作为输⼊结束。这是与 scanf()函数不同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code repairman

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值