c语言键盘输入函数scanf(),C语言 终端输入scanf函数

C语言键盘输入采集scanf函数

前面说过C语言的额printf函数,那么这一次说说scanf函数。

这两个函数像两兄弟,比如在C++里面经常遇到set和get,就差不到就是scanf和printf的意思,printf用来通过终端输出一些内容,scanf用来通过终端输入一些内容。

先看看这个函数的原型:

1

2

3# include

int scanf(const char *format, ...);

哇哦,这么多没有见过的,貌似不懂什么意思,没问题,一步一步来理解。

先来个好理解的,这个函数的意思就是:

1scanf("输入控制符", 输入参数);

就是将键盘输入的参数转换为输入控制符规定格式的数据,然后保存到输入参数地址所表示的变量里面。

举个简单的例子:

1

2int i;

scanf("%d", &i);

这个小段的意思就是输入一个数字,把这个数字作为传入参数赋值给变量i。

这个有个问题需要特别注意,就是&i的使用,很多人刚开始都会只输入i,实际需要传入的是一个地址,特别留意。

来个简单的小例子:

1

2

3

4

5

6

7

8

9

10

11/*beginner/scanf/scanf1.c*/

#include

int main(void)

{

int i;

i = 1314;

printf("i = %d\n", i);

return 0;

}

这个我们最开始编写的程序,如果需要打印一个我们需要的,就要每次修改源码,然后再编译运行,比如刚开始我们要一生一世1314,后来一想不对呀,要生生世世3344方显诚心吗,改过来,如此这般。

但是如果碰到一个变化不断的数字怎么办,比如让你说如N个学生的成绩,用来判断是否达到老师的期望,这个时候再改源码就不合适了,怎么办呢,就需要使用scanf函数了,如下所示:

1

2

3

4

5

6

7

8

9

10

11/*beginner/scanf/scanf2.c*/

#include

int main(void)

{

int i;

scanf("%d", &i);

printf("i = %d\n", i);

return 0;

}

不错,已经每次可以通过终端输入打印出来不同的值了。

但是最后有个提示对不对,好的,大部分人会这么写,但是就会出现各种各样的问题:

1

2

3

4

5

6

7

8

9

10

11/*beginner/scanf/scanf3.c*/

#include

int main(void)

{

int i;

scanf("please input i %d", &i);

printf("i = %d\n", i);

return 0;

}

正确的写法是怎么样的呢,如下:

1

2

3

4

5

6

7

8

9

10

11

12/*beginner/scanf/scanf4.c*/

#include

int main(void)

{

int i;

printf("please input i :");

scanf("%d", &i);

printf("i = %d\n", i);

return 0;

}

看到区别了吗,区别就是把要显示的东西还是使用printf来,只有最简单的输入用scanf来,其实用scanf也是可以的,如果按照scanf3的代码来,你需要在终端中输入的语句是:please input i 1314,这样才能满足你的需求,但显然这不符合你的初衷,对吧。

所以这也说明了另一个问题,那就是scanf的格式与输入需要保持严格一致。

编译运行

直接输入make就可以了。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19#beginner/scanf/Makefile

ALL : scanf1 scanf2

scanf1: scanf1.c

gcc -o scanf1 scanf1.c

scanf2: scanf2.c

gcc -o scanf2 scanf2.c

scanf3: scanf3.c

gcc -o scanf3 scanf3.c

scanf4: scanf4.c

gcc -o scanf4 scanf4.c

.PHONY : clean

clean:

rm -f scanf1 scanf2 scanf3 scanf4

运行自行琢磨。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值