与‘萌新’一起来了解基础的输入函数

先介绍一下常见数据对应的操作符的使用:

整型              ---->      %d (还有一种不常见的形式 :%i  )

字符型          -- -->      %c

浮点数型       -->         %f 或 %lf  (输入时不能带精度)

字符串数据   -->           %s

(空白字符:空格(‘ ’)、换行符(‘\n’)、水平制表符('\t')、换页符('\f')等)

接下我将会以小白的姿态来陈述一些输入函数的用法:如 scanf 、gets 、getchar 函数;


相关函数的用法将会结合以图文结合的形式来呈现说明输入函数的用法(针对VS编译器


(一)scanf (''格式符'',&变量)                                                                        &---> 取地址符

简单介绍--> scanf是我们经常用的基础输入函数;其可以用来输入整型、字符型、浮点数型以及我们不常用的字符串等数据。 

注:

(1)对于整型的输入时,每个格式符(如%d)之间可以用空白字符进行分隔(仅为了美观);另外在输入的时候用空格隔开,代表告诉编译器空格前后分别为我想要输入的数值;

(2)对于字符型的输入时,每一个格式符(%c)之间用不用空白字符进行分隔,这就看自我喜好了,记住空白字符它也是字符,也会被scanf函数当作普通字符进行处理;

(3)对于浮点数型的输入时,再次强调一声:千万不要输入精度,否则会报错或结果数据出错;

(4)对于字符串的输入时,要求字符串之中不能有空白字符,否则读入时候会到读到空白字符处终止读入;

当然,输入读入的时候可以使用宽度;相信对一些小白来说(刚接触C语言的博友),光从我的文字叙述中可能还是有些不解,或者说是读不懂,先读上几遍,留个印象,接下来结合图片进行了解,基本上都能学会常用数据的输入问题。

看一个简单的例子:

首先变量n是个整型,输入时要输入个整数(不要超过int类型所能表示整数的范围);由于格式符中没有指定宽度,将会把输入的数据(‘\n’之前的数据看成一个整体)全部读进去赋值给n变量;


看下面的例子:

将55输入给a;将44输入给c;注:scanf 在进行整形数据的输入的时候,遇到空白字符会直接跳过找下一个位置的输入数据进行读入;

如下图:

问题 :如果多个格式符之间没有空格时,在相同的条件下,输入结果相同吗?

问题: 请看下面的代码,猜测其所输出的结果?

该问题对应的答案如下:

通俗的讲解:

(1)输入的数值是三位,但scanf函数中 “%2d” --> 宽度为2,从左往右来数;

(2)两个变量的输入,宽度都为2,之间空格不必在意,输入的数值442为三位数字,从左往右数两位,该函数将其赋予给m,而n要从2的位置开始读,需要读两位,读取完2之后,往下时但2的后面为‘ ’(空格),则会停止读取,默认读取完成,这是要注意之处;

(3)从左到右开始读取,一位一位的进行下去,把34赋予给m,之后为空格,因为n还没有进行读取,所以后面遇到空格自动跳过,从4开始直到5结束(因为5后面有‘\n’-->回车键);


下面再给些例子,进行巩固熟悉一下关于整型数据的输入:

对应的答案:

如下:


下面是关于字符型数据的输入:        ---->注:会把输入的其他字符看成普通字符;scanf函数中的字符型格式符之间不要有空格,有空格的话,你在输入时要按照格式符的顺序进行输入;

下面给个简单例子:

看scanf函数中的内容,有一个%c-->一个字符型格式符,&n--->对n变量取地址(为什么要去地址,在这里不过多阐述,只需记住用scanf函数进行输入数据时,逗号后面的是变量地址形式即可),通过键盘输入字母  m ‘+’ 回车键 (会把数据输入到缓冲区供scanf进行读取),scanf会把m这个字符赋给n变量;(注:一个,是一个哦)


看下面的代码:  (猜测其的结果)


结果为:        

(注:在输入时对字符格式符用宽度,编译器是会报错的,在VS中;也不建议这样做,如果想给变量存储多个字符,可以用数组或格式符%s(字符串输入形式)进行操作);


如果输入时有多个字符格式符,且中间有空格时,该怎么解决呢?--->按照输入格式符的顺序进行输入.

如下图例

由 “%c  %c%c”   顺序可得,输入时也要如此 ,输入时先输入字母a,然后空格(为啥是空格呢?因为%c之间分格的是空格),再后是字母b与c;若不按这样输入的话,会报错或者数据不正确等;

问题:格式符之间用其他字符如(逗号)呢?   --->  也是如此操作;

先对读取字母a赋予n变量,接下来看有没有逗号(没逗号,则不往下读),有逗号,则继续,将字母b赋予给t变量,由此类推。


浮点数型数据输入:                                            ( 输入时不要带精度

下面举几个例子                                                浮点数格式符之间可以有空格;


下面看几个带宽度的浮点数类型输入:


问题:或许你会想要是将两个浮点数类型的数据输到一起,会出现我想要的结果吗?

                                                                                                              (比如4.37与7.4884)


字符串数据的输入:    (注:如果遇到特别的字符会提前中断的,如空白字符)下面的字符个数要求最多100个;


对字符串进行输入时,常见用到 gets 函数(字符序列中若有空格则不会中断的)


(二) gets                                                          (掌握数组方面的知识更好理解)


(三) getchar



由于自己的水平有限,有些细节之处可能没有讲清楚或者没讲到,还请见谅!!

                                                                                                   望,各位博友客们批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值