赞
踩
小编来此介绍两个暂时认识到的输入函数:1.scanf函数和2.getchar函数
我们先来介绍一下两者:
目录
(上篇文章简单的阐述过scanf返回类型和函参形式,这里不再介绍)
scanf是格式输入函数,它将读取的数据,根据其参数格式存储到相应的参数位置
可以看这段代码
- #include<stdio.h>
- int main()
- {
- int a = 0;
- printf("请输入a的数值:");
- scanf("%d", &a);
- printf("a的值为:%d\n", a);
- return 0;
- }
可以如上图清晰可见,在scanf函数体内,指定的%d类型的数据,我们输入后就存储在了对应的a变量中,这是通常的scanf最简单的应用。
而再往下翻看时,我们会注意到
scanf函数将读取并忽略下一个非空格字符前遇到任何的空格字符,直到读取到一个非空格字符数据才会停止读取。这里的空格字符有:
1.空格 2.换行符 3.制表符
因此,在我们使用scanf函数输入数据时,空格在scanf里面是否添加都不会影响scanf输入数据
如下两图:
我们只需在输入数据的时候自动键盘敲击空格即可,此时对于scanf,空格在不在函数体内,不会有影响。
但这里有一个点需要注意:当空格在读取的数据之后放置时,我们需要再重新输入一个非空格字符的数据,也就是这个情况:
scanf("%d %d ", &a, &b);
我们可以注意到在第二个%d之后有一个空格存在,这时我们如果只输入两个数据时,我们发现函数将不会读取结束
即便是给如图的“2”后再跟上空格也不会停止读取,因为前面提到了scanf会 直到读取到一个非空格字符数据才会停止读取。所以我们需要在"2"后面接上空格键后随意输入一个非空格字符即可(数字,字母等)
此时第三个输入的数据并不会存放到函数内,所以我们可以随意输入。
getchar是键盘输入函数,其功能是从键盘上输入一个字符。
也就是说,getchar只能接收字符型数据。
int getchar ( void )
我们可以看到,getchar的参数是void,返回为int型
既然它是接受字符型数据的,可为什么返回的是整型呢?由上图可知
这是因为getchar返回的是字符的ASCII码值,也就是整型数值
而读取失败的时候,我们将会返回EOF(也就是-1)这跟scanf函数读取失败时返回的数值一样,只有读取的数据是字符型数据我们才会正确返回值,而它返回的也就是我们从键盘输入的字符。
我们将getchar放入整型变量ch中,然后键盘输入,即可返回字符a。
当然,身为专门用来接收字符数据的函数,也得有它相对应的输出函数——putchar函数
即,我们可以将上面的getchar从键盘读入的字符放入ch变量后,用putchar输出,如下:
也就是scanf和printf的关系一般,只需稍加类比即可轻松使用。
而类比一下scanf函数时,我们也可连续输入字符,只需要像scanf函数一样
- #include<stdio.h>
- int main()
- {
- int ch = 0;
- while ((ch = getchar()) != EOF)
- {
- putchar(ch);
- }
- return 0;
- }
而想要结束循环输入时,我们也只需要像scanf函数一样,从键盘敲入“Ctrl+z”即可退出程序。
由于考虑到文章篇幅问题,我们先写到这里,这只是一个小小的认识,会有后续。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。