c语言——输入方式gets,scanf,fgets分析
我们使用最广泛的输入方式应该是scanf函数,scanf可输入的数据类型范围广,使用便捷。但其也不乏缺陷,而且某些时候使用gets和getchar会更加高效。
先来说说scanf
scanf属于stdio.h函数库,支持多种数据类型(整型,浮点型,字符型,指针...),经常和输出函数printf一起使用,使用的最为广泛。
一些基本的使用方法大家也许已经有所了解,如果还想具体了解scanf请参考这篇文章http://t.csdn.cn/6p3QY
在这里想要强调的是scanf的弊端:
1.向scanf中输入内容时,最后按下的回车键将会被保留在缓冲区内。有些时候这个留下的回车会影响到程序正常运行,通常用getchar()或者scanf(“%c”)......将回车吸收
2.scanf读入内容的时候,如果你输入了空格或者回车,后续内容将不会被读入。如下程序
#include<stdio.h> int main() {char a[12];scanf("%s",a);printf("%s",a); return 0; }
输入“i love you”,输出结果为“i”。证明第一个空格以后所有内容都没被读入。
但是gets函数不会出现第二种情况,gets中输入的空格将会被读入。下面我们来介绍gets函数
gets
gets函数只用于读入字符或者字符串(非要读整型数也可以,可能会警告甚至error),经常和puts()搭配使用。
使用格式如下
char a[5];
gets(a);
puts(a);
gets函数以回车键为结束标志,并且会把这个回车键读入然后替换成\0,不会遗留在缓冲区内,这点可以弥补scanf第一点不足。
而且gets函数可以正常读入空格,弥补了scanf第二点不足。
当然gets自身也有不足,gets不会检查输入内容,可能会出现缓冲区溢出越界等问题。这时候可以利用fgets函数弥补这点不足。
fgets
fgets函数和gets函数有相似部分:用于输入字符串。是的,fgets只能用于输入字符数组,不能用于整型等等。相应的它和fputs函数配套使用。
使用格式如下
char a[10];
fgets(a,10,stdin);
fputs(a, stdout);fgets函数的参数有三个:数组名,下标,stdin
stdin就是指从键盘获取字符
dgets可以检查是否溢出,比gets更加安全
就酱,拜拜~
c语言——输入方式gets,scanf,fgets分析相关推荐
- c语言---输入输出函数 printf scanf 及输入输出控制符
printf # include <stdio.h> int printf(const char *format, ...); int printf("输出控制符 非输出控制符& ...
- c语言数据输入方式scanf,【C语言】-数据输入-scanf( )和getchar( )
格式化输入函数scanf( ) scanf( )功能: 按照指定的格式读入键盘上输入的若干个任意类型的数据,存入到argument参数所指向的内存单元,函数返回值为读入并赋给argument的数据个数 ...
- C语言 scanf三种不同的输入方式
关于C语言 scanf 的三种不同的输入方式 第一种:先输入要读取多少个数,从后面的数字中读取相应个数 代码示意如下 int n,x,flag;scanf("%d",&n) ...
- C语言[关于scanf接收输入时输入方式的一些细节]
这里我用的是vs2022.建议大家多实践,多自己动手发现问题. 这里我用这八种输入方式进行演示. 这是第一种输出方式,b没有正确输入是因为scanf里我们使用空格隔开,这里我们却使用了逗号隔开.当他遇 ...
- C语言scanf fgets,C语言中输入函数(scanf()、fgets()和gets())的区别详解
前言 大家都知道在C语言中,有三种主要的输入函数:scanf(),fgets()以及gets().他们的使用方法及注意事项如下: 1.scanf() 它是一种格式化的输入方式,可一次性按照规定的格式输 ...
- c语言怎么用scanf输入字母,c语言输入字符串(c语言怎么用scanf输入字符串)
但是实际操作发现我的字符串无论输入的多长多短,都是输入的什么输出的就. 在C语言中,输入输出字符串有以下两种方式:1 用scanf/printf输入输出.scanf/printf是C语言的格式化输入输 ...
- linux下c语言scanf,C语言输入scanf
C语言输入scanf教程 在 scanf() 函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并自动把数值变换成适当的机内格式. scanf函数机制 ...
- C语言 输入一个数值,分析是正还是负,并打印出此数
C语言 输入一个数值,分析是正还是负,并打印出此数 #include <stdio.h>int main(void) {int x;printf("张宝田\n");s ...
- C语言中几种输入方式
当我们输入一串字符或者数字时,需要一种标志作为输入结束的标志,所以我总结了以下几种: 1.输入一串字符串以回车键作为输入结束的标志 char ch; while(((ch=getchar())!='n ...
最新文章
- 为什么mysql打开闪屏_mysql登录闪屏问题解决办法
- [trustzone]-ARM trustzone技术下常见的软件框图
- 【转】如何拿到半数面试公司Offer——我的Python求职之路
- Lucene学习总结之三:Lucene的索引文件格式(1)
- (扩展)欧几里德快速幂
- WebDev.WebServer.exe遇到问题需要关闭
- 洛谷P2147[SDOI2008]洞穴勘测
- 什么是闭包?如何理解及使用闭包?
- limesurvey的问卷类型
- 30封外贸邮件模板,外贸人速收藏!
- java 给图片添加水印_java 为图片添加水印(文字水印、图片水印)
- 【C++】C++ 内存分配(new,operator new)详解
- 计算机or笔记本,笔记本or台式机 这几款戴尔主机性能上没得挑
- 网易有道三季报解读:转型“有道”,但依旧道阻且长
- 斐波那契数列与数列求和
- 第二章:简单古典密码(及其五元组)
- 一个五年架构师凭什么基本年薪酬就可以达到50万
- 十七、网上商城项目(5)
- Windows 版本说明,Enterprise、Ultimate、Home、Professional知多少?
- C#:实现康托尔集cantor set算法 (附完整源码)