当前位置:首页 » 《关于电脑》 » 正文

C语言中关于scanf的初认识

22 人参与  2024年11月19日 08:40  分类 : 《关于电脑》  评论

点击全文阅读


scanf格式输入函数

头文件:在引用该函数时需要加上头文件<stdio.h>

功能顾名思义,按照指定的格式输入数据并存入地址到指定的内存单元中

返回值该函数会返回一个读取到输入数据的整数,如:输入10,20此时会返回2,代表输入了两个数据(然而在刚刚使用时很多人会忽略返回值,在使用vs2022中会被警告,但是在使用时问题不大

地址:使用该函数时,变量前⾯必须加上 & 运算符(指针变量除外),因为 scanf() 传递的不是值,⽽是地址,即将变量的地址指向⽤⼾输⼊的值。
如果这⾥的变量是指针变量(⽐如字符串变量),那就不⽤加 & 运算符。

使用

例:scanf("%d",&a);

它的第⼀个参数是⼀个格式字符串,⾥⾯会放置占位符(与 printf() 的占位符基本⼀致),告诉编译器如何解读⽤⼾的输⼊,需要提取的数据是什么类型。
这是因为C语⾔的数据都是有类型的, scanf() 必须提前知道⽤⼾输⼊的数据类型,才能处理数据。
它的其余参数就是存放⽤⼾输⼊的变量,格式字符串⾥⾯有多少个占位符,就有多少个变量。
上⾯⽰例中, scanf() 的第⼀个参数 %d ,表⽰⽤⼾输⼊的应该是⼀个整数。 %d 就是⼀个占位符, % 是占位符的标志,d表⽰整数。第⼆个参数 &i 表⽰,将⽤⼾从键盘输⼊的整数存⼊变量a 。

例:

scanf("%d%d%f%f", &i, &j, &x, &y);

上⾯⽰例中,格式字符串 %d%d%f%f ,表⽰⽤⼾输⼊的前两个是整数,后两个是浮点数,⽐如 1 20 1.0 2.0 。这四个值依次放⼊ i 、 j 、 x 、 y 四个变量。
scanf() 处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等。
所以,⽤⼾输⼊的数据之间,有⼀个或多个空格不影响 scanf() 解读数据。另外,⽤⼾使⽤回⻋键,将输⼊分成⼏⾏,也不影响解读。

scanf() 处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存
进⾏解读。
解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。

在初期使用时,我发现在如何输入数据时,很多人是模糊的

例如:

scanf("%d%d",&a,&b);虽然两个%d是挨着的,但是输入值时还是需要空格或换行分开输入

scanf("%d,%d",&a ,&b);此时就不需要空格或换行,如前面所言,按照格式输入,输入值时用逗号隔开即可

 但有一点要注意在输入时,是英文的逗号,我们的电脑在运行时输入法会自动换成中文,导致输入是中文的逗号,这时候就会出错,要记得换输入法,这也是容易被忽略的一个地方,图中就是一个中文的输入逗号

 

还有有关返回值的问题:

scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。
如果没有读取任何项,或者匹配失败,则返回 0 。
如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量EOF(-1)。EOF-endoffile⽂件结束标志

以上是一个初学者的见解,有错误的地方大家轻喷,拜托了


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/188550.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1