C中scanf/gets/fgets的区别

功能:同样是获取字符串。

区别:

scanf  遇到空格/回车/Tab键认为输入结束,

    但是空格/回车/Tab键仍会留在输入的缓冲区常见的是使用getchar(),处理scanf的后事;如果想要清除残余,可以使用fllush()清除缓存。

gets   可以接收空格/回车/Tab键回车结束输入,但是在Linux中gets是一个危险的函数,因为没有溢出检查;在window中gets是升级版的是安全的。

    使用‘\n‘代替‘\0‘,回车键不会留在输入缓冲区中。

fgets  可以完美替代gets,只是语法不一样。

相同点:

scanf gets 在字符串接收完毕后自动加‘\0’;

时间: 2024-08-29 21:23:12

C中scanf/gets/fgets的区别的相关文章

scanf() & gets() & fgets() 读取字符串的区别

scanf()和gets()读取字符串的区别 主要的差别在于它们如何决定字符串何时结束 scanf()更基于获取单词(get word)而不是获取字符串(get string): gets()会读取所有的字符,直到遇见第一个换行符为止. scanf()使用两种方法决定输入结束. 如果使用%s格式,字符串读到(但不包括)下一个空白字符(比如空格.制表符或换行符) 如果指定了字段宽度,比如%10s,scanf()就会读入10个字符或者直到遇见第一个空白字符,由二者中最先满足的那一个终止输入 注:无论

scanf,fscanf,sscanf的区别----整理

转自原文 scanf,fscanf,sscanf的区别----整理 scanf 从控制台输入 fscanf 从文件输入 sscanf 从指定字符串输入 1.例:使用scanf函数输入数据. #include<stdio.h> int main() { int a,b,c; printf("输入 a, b, c\n"); scanf("%d,%d,%d", &a, &b, &c); printf("a = %d b = %

C语言输入语句scanf与fgets linux下

1.测试使用scanf的一个例子: #include "stdio.h" #include "string.h" int main() { char name[10]; scanf("%s", name); puts(name); return 0; } 编译.调用如下: 可以看到第二次,由于输入的字符串长度,导致Abort 2.同样的一个fgets的例子: #include "stdio.h" #include "

【翻译】JAVA中抽象类和接口的区别

不知道有没有人翻译过了,这篇是挺简单的,权当复习一遍内容吧. 很多常见的面试问题如"抽象类和接口有什么区别","你在什么时候用抽象类什么时候用接口".所以在这篇文章里面,我们会讨论一下这个话题. 在开始讨论它们的区别之前,我们先看看它们的介绍. Abstract class 抽象类 抽象类被用来抽象出子类的共同特征.它是不能被实例化的,它只能被子类继承作为超类使用.抽象类被用作它的子类下的层次结构创建模板(Abstract classes are used to c

lua中的pairs和ipairs区别

pairs Returns three values: the next function, the table t, and nil, so that the construction for k,v in pairs(t) do body end will iterate over all key–value pairs of table t. See function next for the caveats of modifying the table during its traver

浅谈HTTP中Get与Post的区别_转

可参考:HTTP请求中POST与GET的区别 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作.到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息. 1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的

python类中super()和__init__()的区别

本文和大家分享的主要是python开发中super()和__init__()的区别,希望通过本文的分享,对初学者学习这部分内容有所帮助. 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(self): print 'creat A ', Base.__init__(self) class chi

PHP中this,self,parent的区别

{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划web开发构架都是很有意义的. PHP5经过重写后,对OOP的支持额有了很大的飞跃,成为了具备了大部分面向对象语言的特性的语言,比PHP4有了很多的面向对象的特性.这里我主要谈的是this,self,parent 三个关键字之间的区别.从字面上来理解,分别

【转载】C#中[],List,Array,ArrayList的区别及应用

本篇文章主要是对C#中[],List,Array,ArrayList的区别及应用进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 [] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. Array 是针对任意类型.固定长度的. ArrayList 是针对任意类型.任意长度的. Array 和 ArrayList 是通过存储 object 实现任意类型的,所以使用时要转换.