scanf函数使用方法详解

这篇具有很好参考价值的文章主要介绍了scanf函数使用方法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.scanf函数是什么?

1.首先我们需要知道,scanf函数是一种格式化输入函数(按照格式字符串的格式,从键盘上把数据输入到指定的变量之中)

C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。

平时我们使用的最多的就是% + 类型。

二.scanf函数的作用

scanf函数是一种格式化输入函数,它的作用便是通过我们的键盘将输入字符转换成我们需要的类型

在这里需要注意,从键盘上输入的都是字符列如我们输入的是数字123,其实是字符‘1’, ‘2’, ‘3’。 为什么呢?

操作系统内核就是这样运作的。操作系统在接收键盘数据时都将它当成字符来接收的。这时就需要用“输入控制符”将它转化一下。%d的含义就是要将从键盘输入的这些合法的字符转化成一个十进制数字。经过 %d 转化完之后,字符 123 就是数字 123 了

	int i = 10;
	scanf("%d", &i);  //输入的是字符123,转化为数字123

三.注意事项

1.输入数据

1. 通常,在调用 scanf()函数时,格式化字符串只包含转换说明(类型的转换)
如果不是,那么格式化字符串中除转换说明与空白符以外的其他所有字符,必须与输入源对应位置的字符完全一致。否则 scanf()函数就会终止处理,并将不匹配的字符放回到缓冲区中下一个转换字符将会从该字符开始。

scanf函数用法详解,小路_C语言学习,c++,算法,c语言

此时,若我们输入的是10,i依旧为零,因为在输入时我们并没有输入 i=10, 而是直接输入10,此时缓冲区里只有10,scanf从缓冲区里读数据时并没有i 于是便终止处理了,因此 i = 0没有被改变

但是此时字符1和字符0依旧在缓冲区中,于是gets函数就将它读走了,然后输出。

scanf函数用法详解,小路_C语言学习,c++,算法,c语言
此时我们输入 i=10,此时打印i就是10,然后换行了,这是为什么?
因为在我们输入i=10后按了回车,相当于在向缓冲区内输入(\n),之后输入字符串时,被gets函数读走,然后输出了。

此时想要解决很简单,只需要将\n读走就可以了,在这里我们可以使用getchar();
scanf函数用法详解,小路_C语言学习,c++,算法,c语言

注意:此处此处只是举个栗子,在输入时我们一般都不会包含除转换说明之外的其他字符,否则很容易出现BUG。

2.%c

	char s = 0;
	scanf("%c", &s); //此时输入 空格c 将会输出什么
	printf("%c\n", s);

最后会输出,空格 然后换行,此时缓冲区内有,c和\n

那要是%d 或者 %f 呢?
scanf函数用法详解,小路_C语言学习,c++,算法,c语言
scanf函数用法详解,小路_C语言学习,c++,算法,c语言

此时我们发现除了 %c 之外的类型说明都会都会忽略前面的空白字符(whitespace character)(空格, 回车,tab符等)。

四.字段宽度

字段宽度是十进制整型正数,它指定了对于给定的转换说明,scanf()所读取字符的最大数量。对于字符串输入来说,字段宽度可以防止缓冲区出现溢出情况

scanf函数用法详解,小路_C语言学习,c++,算法,c语言
此时,缓冲区内还有数字4 和 \n。

五.scanf函数的返回值

1. scanf()函数的返回值是成功存储数据项的数量

如果一切执行顺利,返回值就是转换说明的数量(但不计包含星号的转换说明)。如果发生读取错误或在转换数据项前就到达了输入源尾部,则 scanf()函数会返回值 EOF.文章来源地址https://www.toymoban.com/news/detail-636910.html

到了这里,关于scanf函数使用方法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript系列从入门到精通系列第二十篇:使用工厂方法创建JavaScript对象,JavaScript构造函数详解,JavaScript类概念的介绍

    文章目录 一:使用工厂方法创建对象 1:原始写法 2:工厂方式 3:结果验证  二:构造函数 1:什么是构造函数 2:构造函数和普通函数的区别 3:构造函数的执行流程 三:类 1:什么是类 2:如何检查一个对象是否是个类的实例 3:Object的地位 四:构造函数修改 1:重大问题

    2024年02月08日
    浏览(40)
  • 《C和指针》笔记6:gets/puts/scanf/printf/getchar函数用法

    本博客可以了解一些gets/puts/scanf/printf/getchar函数的基本用法。 gets 函数从标准输入读取一行文本并把它存储于作为参数传递给它的数组中。 一行输入由一串字符组成,以一个换行符(newline)结尾 。 gets 函数 丢弃换行符 ,并在该行的末尾存储一个NUL字节(一个NUL字节是指字节模

    2024年02月11日
    浏览(49)
  • 关于【C语言】中scanf与getchar的用法和常见错误详解

    写这篇博客的起因是最近博主自己学习中总是遇到类似的错误,并曾百思不得其解。 今天分享出来是希望帮助大家在写代码时避免这些错误。话不多说,我们直接开始吧! 君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 我们先来看看再MSDN里对scanf的解释 - scanf 的功能

    2024年02月05日
    浏览(48)
  • C语言(输入输出函数getchar,putchar、gets、puts,scanf,printf的功能以及用法)

    int getchar( void ); 返回值为int,所以需要用一个int变量来接收,不管输入几个字符,每次都只接收第一个字符,常与while和putchar配合使用。 从下面这张图可以看出,输入一个空格也会打印 当然,获取一个字符用得不多,每次都需要获取一串,所以我们可以配合while来使用。 用

    2024年02月02日
    浏览(48)
  • 【Python beautifulsoup】详细介绍beautifulsoup库的使用方法,包括安装方式、基本用法、常用方法和技巧,以及结合lxml和parsel的具体使用场景和区别。

    Python beautifulsoup库是一个强大的Web抓取和解析库,它提供了丰富的功能和简单易用的API,可以帮助我们处理HTML和XML文档,从中提取数据,进行数据清洗和处理。beautifulsoup库基于Python标准库中的html.parser模块,同时还可以与第三方解析库lxml和parsel配合使用,提供更高效和灵活的

    2024年02月04日
    浏览(60)
  • JavaScript中apply函数方法多种使用方法!

    在JavaScript中, apply 是函数对象的一个方法,用于调用一个函数,并指定函数内部的 this 上下文以及函数的参数列表。它与另一个方法 call 功能类似,但是参数传递的方式略有不同。 apply 方法的语法如下: thisArg : 在调用函数时指定的 this 上下文,即函数内部的 this 指向的对

    2024年03月10日
    浏览(60)
  • Matlab函数的使用方法

    MATLAB 是一种互动式数值计算环境,可以用它进行数值计算、数据可视化、算法开发等。在 MATLAB 中,函数是一种重要的工具,用于封装可重复使用的代码以及实现复杂算法。以下是 MATLAB 函数的使用方法: 1. 函数的创建:使用 MATLAB 编辑器或文本编辑器创建一个新的 .m 文件,

    2024年02月10日
    浏览(40)
  • SQL中部分函数使用方法

    decode(skaccnum.def4,\\\'~\\\',\\\'0\\\',skaccnum.def4)         这是一个 Oracle SQL 中的 DECODE 函数的使用示例。DECODE 函数通常用于根据某些条件返回不同的值。在这个例子中,DECODE 函数的第一个参数是 `skaccnum.def4`,第二个参数是 `~`,第三个参数是 `0`,第四个参数是 `skaccnum.def4`。函数的作用

    2023年04月09日
    浏览(23)
  • Unity中常用函数使用方法

    Update() 正常更新,创建 JavaScript 脚本时默认添加这个方法,每一帧都会由系统调用一次该方法。 LateUpdate() 推迟更新,此方法在 Update() 方法执行完后调用,每一帧都调用一次。 FixedUpdate() 置于这个函数中的代码每隔一定时间执行一次。 Awake() 脚本唤醒,用于脚本的初始化,在

    2024年02月08日
    浏览(36)
  • 【mybatis】mapper.xml中foreach的用法,含批量查询、插入、修改、删除方法的使用

    一、xml文件中foreach的主要属性 foreach元素的属性主要有 collection,item,index,separator,open,close。 collection: 表示集合,数据源 item :表示集合中的每一个元素 index :用于表示在迭代过程中,每次迭代到的位置 separator :表示在迭代时数据以什么符号作为分隔符 open :表示该语

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包