当前位置:网站首页>c语言中的输入输出函数之scanf函数
c语言中的输入输出函数之scanf函数
2022-07-13 17:34:00 【it小婷】
前言
为什么写这个主题的文章呢?肯定很多人纳闷,谁还不懂scanf和printf函数?c在菜,也不至于不懂这个等等,刚开始我也这么认为,直到我最近做题练习的时候发现,我可能并没有那么了解这两个最基本最普通的函数,甚至其最基本的用法都不太了解,那时候的我做题的崩溃就如下面图片一样。所以,我翻阅大量书籍,查阅大量资料,将这两个函数好好说一说,千万不要向我一样在这种小点上浪费时间!!
scanf函数
众所周知,c语言中scanf函数是一个从键盘上输入东西的函数。但这也是我们对它最基本的了解。下面请听我来说说它
定义
1.scanf是Scan Format的缩写,翻译过来及格式化扫描,说白了就是从键盘获得你输入的东西。通过翻译过来的名字,所以也叫scanf为格式输入函数(不要被这名字吓到,非常好理解的)----按照用户指定的格式从键盘上把数据输入到指定的变量中。(如果到这还不是特别理解,一会看下面例子呦!!)
2.scanf函数需要声明在头文件stdio.h里面------>#include <stdio.h>(编写代码的时候别忘了写这个)
3.函数原型为:int scanf(const char* restrict format,…)
其返回值为:1.正常情况下,返回读出成功的项数eg:
scanf("%d%d",&a,&b);
只有一项读取成功,返回1,若两项都读取成功,返回2.
2.如果scanf中需要的格式和用户输入的不同的时候,则返回0;读取失败也返回0
eg:
scanf("%d",&a);
上面需要输入整型,但你输入的为字符型等等,返回0.
3.如果遇到错误或者遇到end of file,返回EOF。(end of file指ctrl z或者ctrl d)
scanf函数一般形式
scanf("格式字符串",地址表列);
地址表列
由&+变量名组成
格式字符串
一般形式:%(*)(域宽)(长度修饰符)格式说明符
(括号中的内容可以省略不写)
*
表示读入的数据将要被舍弃,带有*的格式指令不对应可变参数列表中任何一种数据。
eg:
scanf("%d%*d%d",&a,&b,&c);
输入123,1赋值给a,2舍弃(第二个格式指令带着*),3赋值给c
域宽
一个非零的十进制整数形式出现,表示该格式指令最多读入的字符数。
eg:
scanf("%2d%3d",&a,&b);
当输入12345678时,前两个字符(12)赋值给a,(345)三个字符赋值给b其余舍弃,因为输入的代码中明确写明了需要几个字符。
长度修饰符
常用的两个为l和h(l更为常见)
l表示输入长整型数据(%ld)和双精度浮点数时(%lf)
h用来表示输入短整型数据。
格式字符串中存在普通字符
普通字符说白了就是在两个格式指令间输入一些键盘中的其他字符。
正常而言,当输入两个甚至以上数据的时候,我们都是输入完一个,按一次回车,再输下一个,且代码如下:
scanf("%d%d",&a,&b);
两个%d间没有任何东西,所以回车输入下一个数据。但近几次我发现,它还可以这么用:
当输入多个数据时,两个格式指令间可以加一些符号,只不过,你加了什么符号,到时候从键盘输入的时候也需要加同样符号。(有点懵懵的,对吧,不怕,接下来,我举举例子就都清晰了)
eg:
scanf("%d;%d",&a,&b);
//两者之间有个分号,所以输入的时候,输入完第一个数据后,输入一个分号,然后输入第二个数据,再回车。
//假设:此时键盘输入为8;7(一定不要忘记那个分号)
scanf("%d %d",&a,&b);
//此时从键盘输入为8 7
所以你前面格式指令间用到什么符号,则后续从键盘输入的时候也需要输入相关符号,这样才可以和后面地址对应起来!!!!
scanf和scanf_s的区别以及vs解决scanf报错的另一种方法
**注意喽:**我所用的编译器为vs2019在里面使用scanf函数的时候会报错,它提示让你使用scanf_s这个函数替换掉scanf,当然问题解决了,但是,scanf_s这个函数是vs人家自己编译出来的函数,不具有跨平台性,只能应用于vs这个软件里面,所以解决这个的统一方法为:
在代码最初编写这样一个代码:
#define _CRT_SECURE_NO_WARNINGS 1
问题就解决啦,但因为没写一次代码都得编写一次这个太麻烦,所以,可以像我一样设置一下,以后每次打开一个文件编写代码,默认都有这么一行:
1.在你电脑中找到newc++file.cpp的文件(尽可能在vs安装路径那找,容易搜索到)假设有的小盆友安装的时候位置为电脑默认的自己也不知道存放到哪里了,建议大家阔以下载一个软件:everything非常方便查找电脑中任何文件,非常省事还省时间。
2.找到该文件后,将其复制到桌面后,打开(可以采用记事本方式打开)将上面那句代码**#define _CRT_SECURE_NO_WARNINGS 1**复制粘贴进去保存,然后你可以打开查看一下保存没保存上。具体图片如下:(别忘了保存)

3.可以根据ererything来查找newc++file.cpp存放的位置,然后将你桌面上的这个文件复制粘贴到那个位置,替换到原来的,这样每次创建新项目以及新文件,都有这句代码了,不用每次敲了

总结
通过这篇文章是不是比之前更了解scanf函数了?而且了解了它的不同用法,到时候编程的时候岂不是节省了好多时间?我现在对scanf函数的了解也就这些了,肯定会有纰漏的呀,欢迎小阔爱们来指正我,并且补充补充!!!下一次我在给小伙伴们来总结总结printf函数,咱得从细节抓起!!!!你我终将成为最后的胜利者!!
边栏推荐
猜你喜欢

鸟哥谈云原生安全最佳实践 | 文末赠书

Mysql-MVCC

<statement> or DELIMITER expected, got ‘id‘

Flink CDC MongoDB Connector 的实现原理和使用实践

Data operation - query
![Senior explanation - the difference between FPGA and MCU [basic concept of Bi design]](/img/95/1770c5dd38f3c960581bc1859527a4.png)
Senior explanation - the difference between FPGA and MCU [basic concept of Bi design]

keil报错: ERROR 118 (ERRONEOUS REFERENCE TO EXTERNAL VARIABLES) 解决方案及原因

Blue Bridge Cup: the second game of the 13th provincial competition of single chip microcomputer group

ssm项目中下拉框功能的实现

Flink CDC + OceanBase 全增量一体化数据集成方案
随机推荐
随机信号分析第2版 [赵淑清郑薇编著] (部分)课后作业答案(自己写的)
Introduction to robot crawler
rogerbot 爬虫介绍
渗透测试之靶场安装与攻击机配置
Random signal analysis, 2nd Edition [edited by Zhao Shuqing and Zheng Wei] (part) answer to homework after class (written by myself)
The parameters trained by tensorflow are transformed into those under Caffe framework Caffemodel model
Flink CDC + OceanBase 全增量一体化数据集成方案
Is the sub database and sub table really suitable for your system? Talk about how to select sub databases, sub tables and newsql
Basic related concepts of database
yandex bot user agent
Flask 开发 & Get/Post 请求
Ardunio -- interaction between touch sensor and light -- judge whether the light is on according to the touch screen
Implementation of drop-down box function in SSM project
[untitled]
基于logisim的八位求补器的设计与实现
系统总出故障怎么办,或许你该学学稳定性建设
Flink CDC MongoDB Connector 的实现原理和使用实践
Opentext enterprise content management and e-commerce suite integration, integration and management of content for optimal process efficiency and compliance
学长讲解 - FPGA与单片机的区别 【毕设基础概念】
sql_server2014下载与安装