c语言中的输入输出函数之scanf函数

c语言中的输入输出函数之scanf函数该篇文章主要介绍了c语言中的scanf函数

前言

为什么写这个主题的文章呢?肯定很多人纳闷,谁还不懂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函数,咱得从细节抓起!!!!你我终将成为最后的胜利者!!
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36011.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注