首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

gets 、getchar 、fgets 、scanf的用法

4.scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。   gets可以接收空格。   ...scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格   简单说:gets是接收一个不以’\n’结尾的字符串,getchar是接收任何一个字符(包括’\n’),fgets是接收一个以...6.gets和fgets区别:   每当讨论 gets 函数时,大家不由自主地就会想起 1988 年的“互联网蠕虫”,它在 UNIX 操作系统的 finger 后台程序中使用一个 gets 调用作为它的攻击方式之一...很显然,对蠕虫病毒的实现来说, gets 函数的功劳不可小视。不仅如此,GCC 也不推荐使用gets和puts函数。   ...由此可见,gets 函数是极其不安全的,可能成为病毒的入口,因为 gets 函数没有限制输入的字符串长度。

2.9K60
您找到你想要的搜索结果了吗?
是的
没有找到

最通俗易懂地讲解scanfgets和getchar的区别

== 在很多时候会出现这样一种情况,即先输入了一个 scanf 的语句,然后可能要用到 gets ,这个时候上一个 scanf 留下的 回车 就会打搅乱下面的数据读取!!!...("%d",&n); for(i=0;i<n;++i){ scanf("\n"); // 去除回车 //gets(); //getchar(); gets...不过,无论是对待字符还是字符串,scanf 的处理都是比较相似的,这一点倒是比较容易学习和使用,但是 来自 pudn,只有一段开头话: 中文版本:在数据大量的情况下,用 gets 读取快于 scanf(...小结: 不接收 空格 和 回车 2、gets 到这里,你应该不会忘记上面说过的 scanf 是如何处理 回车符(\n) 的了,这一点和 gets 是差别巨大的!!!...gets 对末尾 回车符 的处理方式是,接收 回车,但把 回车 替换为 \0,不像 scanf 是留在缓存中,所以在用 gets 时,要注意数组的大小增加1,不然就会出现数组越界等问题。

4.9K31

C语言gets()函数和scanf()函数关于字符串的输入

在学习和使用C语言时,我们也无法避免需要输入字符串,因此本文是关于C语言中输入字符串的两个函数 gets() 和 scanf() 的。...一、gets()函数 功能:从标准输入流 stdin 中读取一行,并将其存储在缓冲区中。该行由第一个换行符 ('\n') 之前的所有字符组成。 注意:预留存储字符串的空间要足够大....头文件: #include 代码示例: #include int main() { char arr[20] = { 0 }; gets(arr); printf...不多介绍啦) 注意:在使用scanf()函数输入字符串时,遇到空格,默认该字符串输入结束。...)函数,还是gets()函数,使用时都具有缺陷 这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位点赞评论收藏⭐️,谢谢!!!

33940

CC++ gets、fgets、gets_s函数使用引起的思考

参考链接: C++ gets() 2019独角兽企业重金招聘Python工程师标准>>>          最近做游戏编辑器,自己试着用C/C++写了一个读取简单配置表的函数,在控制台下测试的时候,使用了...C的标准库gets函数,发现编译器报告gets函数unsafe,网上搜索了一下,发现gets函数不对接受字符串的buffer进行边界检测,会造成越界,从而产生bug;自己写的东西,也是自己用的东西,当然可以在定义配置表的时候得到控制...函数获取的不一样,fgets函数获取的字符串会在buffer里面保留换行符,而gets函数不会;好吧,问题找到了,解决也很简单,把最后一个换行符拿掉,换成'\0'就可以了。...然后,又发现有个gets_s函数,可以像gets一样不会获取换行符,也不会有gets的越界问题,然后在cppreference.com查看了这几个函数的描述,却发现gets_s函数是一个标准库扩展函数,...一个可选项;所以就不知道这个gets_s函数在各个编译器下的支持情况如何!

85600

【C++】scanf()和scanf_s()函数

参考链接: C++ scanf scanf()函数是标准C中提供的标准输入函数,用以用户输入数据  scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc...++2005开始,VS系统提供了scanf_s()。...原因和区别:  scanf()在读取数据时不检查边界,所以可能会造成内存访问越界:  //例如:分配了5字节的空间但是用户输入了10字节,就会导致scanf()读到10个字节 char buf[5]={...以上代码如果用scanf_s()则可避免此问题:  char buf[5]={'\0'}; scanf_s("%s",buf,5); //最多读取4个字符,因为buf[4]要放'\0'  //如果输入1234567890...,则buf只会接受前4个字符  注: scanf_s最后一个参数n是接收缓冲区的大小(即buf的容量),表示最多读取n-1个字符.

2.3K20

scanf的使用,cin和scanf的区别

scanf 函数 相对于 printf 函数,scanf 函数就简单得多。scanf 函数的功能与 printf 函数正好相反,执行格式化输入功能。...该函数原型的一般格式如下: int scanf (const char *format, …); 从函数原型可以看出,同 printf 函数相似,scanf 函数也是一个“可变参数函数”。...第 1 个 scanf 读取了“h”,但是输入缓冲区里面还留有一个“\n”,于是第 2 个 scanf 读取这个“\n”,然后输入“e”和第 2 个回车符“\n”。...同理,第 3 个 scanf 读取了“e”,第 4 个 scanf 读取了第 2 个回车符“\n”,第 5 个 scanf读取了“l”。...因此,程序并没有提前结束,而是完整地循环了5次scanf语句,只不过有两次scanf都读取到回车符“\n”而已。

94240

c语言scanf函数用法详解_c语言输入scanf格式

本节介绍输入函数 scanf 的用法。scanf 和 printf 一样,非常重要,而且用得非常多,所以一定要掌握。 概述 scanf 的功能用一句话来概括就是“通过键盘给程序中的变量赋值”。...所以 scanf 中%d后面也没有必要加\n,因为在 scanf 中\n不起换行的作用。它不但什么作用都没有,你还要原样将它输入一遍。...只有按回车键后 scanf 才会进入这个缓冲区和取数据,所取数据的个数取决于 scanf 中“输入参数”的个数。...但是需要提醒大家注意的是,在之前程序中,因为 scanf 是 %d,所以 a 没有被取出来,还在缓冲区中。当遇到下一个 scanf 是 %c 时它就会被取出来。...小结 scanf 的使用看似细节繁杂,但使用起来非常简单。就目前而言,只要掌握以下五点: 在 scanf 的“输入参数”中,变量前面的取地址符&不要忘记。

3.6K31
领券