C语言中scanf到底是怎样的功能???
1,我没有设置回车结束,但似乎它默认回车结束输入
2,我输入88,然后空格,再输入99,结果printf是88. 99没了?它内部是怎样的处理规则?
3,我先空格空格,再输入88. 结果成功输出。它似乎又能绕过空格??
它到底是按照怎样的顺序规则进行操作的? 展开
C语言中scanf是标准库函数,主要用来接收用户输入的数据。
C标准函数库是所有符合标准的头文件的集合,以及常用的函数库实现程序,例如I/O输入输出和字符串控制。不像这三种COBOL、Fortran和PL/I等编程语言,在C语言的工作任务里不会包含嵌入的关键字,所以几乎所有的C语言程序都是由标准函数库的函数来创建的。
C语言简介
C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。
要耐心看啊!别看字多,容易读的!!!要分成3段读,不要一口气看完!
1.scanf就是输入一个数然后回车结束。听不懂不好意思、别理他
---------------------------------------------------------------------------
举个例子:
int i; //定义i
然后我们提示用户输入,
printf("请输入一个数:");
接着,我们使用scanf("%d",&i);
输入完数后,我们跟用户说声你刚才输的数
printf("您刚才输入的数是%d",i);
----------------------------------------------------------------------------
分析:
首先定义int i是没有问题要问的。
之后用printf也是没有问题要问的,要问的是在printf之后。
电脑执行到printf看到后面的scanf函数,便停了下了,等待用户输入。所以在一个C语言程序里,
有scanf函数就要停下来等待用户输入。但是用户输入完后要怎么跟电脑说:”我输入完了“?
就是用scanf函数本身要按回车键的功能。
scanf函数意思”总结“:电脑碰到scanf要停下,等待用户输入,用户输入后按回车告诉电脑输入OK,电脑继续执行下面的代码。
楼主你说的没有设置,是不可能设置的。
2.这个问题简单。
scanf("%d",&i);
首先我们输入88,这之后一个空格,很好,你没有用回车键告诉电脑,而是用空格键。
88之后空格,然后不管你输入多少,比如88 544还是88 9990,或者在一个空格88 878 897
这些数字里,翻译器只取88,为什么呢?其实空格和回车差不多,讲讲区别吧!
空格:我们输入空格之后,可以继续输入数字,不管是多少,都可以。
回车:而我们输入回车后,电脑就立即把回车键之前你所写的看做数,就如,88然后回车,电脑把回车之前的88看做用户所输入的数。但是,如果包含空格键,直接把后面的数省略!就如:
88 99,88后面有空格,空格和99将被忽略。
讲了这么多,总而言之,输入88,然后按空格的时候,电脑已经把88看做一个数了,所以后面的99是另一个数,所以不写入&i。
扩展知识:如果要输入俩个数甚至n个数,代码如下:
#include "stdio.h"
main()
{
int i;
int a;
pirntf("请输入俩个数(输入第二个数用空格键隔开!)");
scanf("%d %d",&i,&a);
printf("这俩个数分别是:%d和%d",i,a);
}
3.上面已经说了,空格和回车差不多个功能,按空格时电脑把前面所输入的看作是数,
例如输入88然后空格,然后99,空格前的88已经赋给i了,99不能赋值,直接忽略。
不过,楼主是空格空格,但是空格之前没有用户所输入的,等于没有。所以给88.
----------------------------------------------------------------------------------------------------------------------
如果是新手,可以看扩展知识,里面有一个错误,大家去找找;如果是高手,就可以忽略这个错误。
还有错误啊 讲啊 看扩张头会晕了哦 说出来吧
这不算什么,扩展是对的,里面的printf函数拼错了,拼成了pirntf。
scanf("%d %d",&i,&a);
这行代码是指让用户分别输入i和a的值,输入俩个数要用空格隔开(你动手试试,光看是不行的)。但是scanf里面的%d和%d要用空格隔开,不能写成
scanf("%d%d",&i,&a);这是不对的!
1,回车键是C语言的结束符 表示上一个类型的数据已经读入结束,当然 字符串不一样的。
2,你需要从键盘读入两个整形数据 ,那么就需要有两个返回值,即 scanf(“%d%d”,&i,&j)。
它能跳过非打印字符如空格、Tab、回车符,只能读取一个整数。所以99就未被读取(可以留待下一次读取)。