我们使用最广泛的输入方式应该是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分析相关推荐

  1. c语言---输入输出函数 printf scanf 及输入输出控制符

    printf # include <stdio.h> int printf(const char *format, ...); int printf("输出控制符 非输出控制符& ...

  2. c语言数据输入方式scanf,【C语言】-数据输入-scanf( )和getchar( )

    格式化输入函数scanf( ) scanf( )功能: 按照指定的格式读入键盘上输入的若干个任意类型的数据,存入到argument参数所指向的内存单元,函数返回值为读入并赋给argument的数据个数 ...

  3. C语言 scanf三种不同的输入方式

    关于C语言 scanf 的三种不同的输入方式 第一种:先输入要读取多少个数,从后面的数字中读取相应个数 代码示意如下 int n,x,flag;scanf("%d",&n) ...

  4. C语言[关于scanf接收输入时输入方式的一些细节]

    这里我用的是vs2022.建议大家多实践,多自己动手发现问题. 这里我用这八种输入方式进行演示. 这是第一种输出方式,b没有正确输入是因为scanf里我们使用空格隔开,这里我们却使用了逗号隔开.当他遇 ...

  5. C语言scanf fgets,C语言中输入函数(scanf()、fgets()和gets())的区别详解

    前言 大家都知道在C语言中,有三种主要的输入函数:scanf(),fgets()以及gets().他们的使用方法及注意事项如下: 1.scanf() 它是一种格式化的输入方式,可一次性按照规定的格式输 ...

  6. c语言怎么用scanf输入字母,c语言输入字符串(c语言怎么用scanf输入字符串)

    但是实际操作发现我的字符串无论输入的多长多短,都是输入的什么输出的就. 在C语言中,输入输出字符串有以下两种方式:1 用scanf/printf输入输出.scanf/printf是C语言的格式化输入输 ...

  7. linux下c语言scanf,C语言输入scanf

    C语言输入scanf教程 在 scanf() 函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并自动把数值变换成适当的机内格式. scanf函数机制 ...

  8. C语言 输入一个数值,分析是正还是负,并打印出此数

    C语言  输入一个数值,分析是正还是负,并打印出此数 #include <stdio.h>int main(void) {int x;printf("张宝田\n");s ...

  9. C语言中几种输入方式

    当我们输入一串字符或者数字时,需要一种标志作为输入结束的标志,所以我总结了以下几种: 1.输入一串字符串以回车键作为输入结束的标志 char ch; while(((ch=getchar())!='n ...

最新文章

  1. 为什么mysql打开闪屏_mysql登录闪屏问题解决办法
  2. [trustzone]-ARM trustzone技术下常见的软件框图
  3. 【转】如何拿到半数面试公司Offer——我的Python求职之路
  4. Lucene学习总结之三:Lucene的索引文件格式(1)
  5. (扩展)欧几里德快速幂
  6. WebDev.WebServer.exe遇到问题需要关闭
  7. 洛谷P2147[SDOI2008]洞穴勘测
  8. 什么是闭包?如何理解及使用闭包?
  9. limesurvey的问卷类型
  10. 30封外贸邮件模板,外贸人速收藏!
  11. java 给图片添加水印_java 为图片添加水印(文字水印、图片水印)
  12. 【C++】C++ 内存分配(new,operator new)详解
  13. 计算机or笔记本,笔记本or台式机 这几款戴尔主机性能上没得挑
  14. 网易有道三季报解读:转型“有道”,但依旧道阻且长
  15. 斐波那契数列与数列求和
  16. 第二章:简单古典密码(及其五元组)
  17. 一个五年架构师凭什么基本年薪酬就可以达到50万
  18. 十七、网上商城项目(5)
  19. Windows 版本说明,Enterprise、Ultimate、Home、Professional知多少?
  20. C#:实现康托尔集cantor set算法 (附完整源码)

热门文章

  1. javaWeb开发陷进与谬误
  2. android 电视分享,Android系统电视去广告2.1
  3. 性能测试——基本性能监控系统使用
  4. android歌词效果,Android 天天动听 悬浮歌词(迷你歌词)效果解读
  5. 【深度学习】图像分类之KNN算法
  6. 2019全球智博会将于苏州召开,三大重磅奖项候选项目火热征集中...
  7. Android 数据库增删改查
  8. Mac安装以及使用SVN提交代码教程
  9. npoi读写excel导致excel文件格式损坏
  10. TRAVEO II的EVB评估板试用