Computer Science and Application
Vol. 09  No. 02 ( 2019 ), Article ID: 28848 , 5 pages
10.12677/CSA.2019.92037

Method Analysis of Keyboard Input Data in C Language Programming

Kui Gao, Xiaocui Fu, Weiyan Li

Information Science and Engineering, Shandong Agricultural University, Tai’an Shandong

Received: Jan. 28th, 2019; accepted: Feb. 6th, 2019; published: Feb. 13th, 2019

ABSTRACT

In C language programming, it is often necessary to input the required data from the keyboard, which can be achieved by different input functions. In this paper, some examples and analysis are given for the use of these input functions; through comparison, usage and considerations of each function have been analyzed, to achieve the purpose of correct use.

Keywords:Scanf, Getchar, Gets, Separator, Keyboard

C语言程序设计中键盘输入数据的方法分析

高葵,付晓翠,李蔚妍

山东农业大学信息科学与工程学院,山东 泰安

收稿日期:2019年1月28日;录用日期:2019年2月6日;发布日期:2019年2月13日

摘 要

在C语言程序设计中经常需要从键盘输入所需要的数据,可以通过不同的输入函数来实现。本文对这几个输入函数的使用举例并进行分析说明,通过比较,分析出每种函数的使用方法和注意事项,达到正确使用的目的。

关键词 :Scanf,Getchar,Gets,分隔符,键盘

Copyright © 2019 by author(s) and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

1. 引言

C语言程序设计是一门实践性很强的语言课程,在程序设计过程中经常需要从键盘输入所需要的数据。C语言没有专门的输入语句,可以调用C语言编译系统提供的函数库中的库函数来实现。有些程序虽然调试成功了,但由于执行过程中输入数据出错了,导致程序的运行结果出错。所以如何正确输入程序运行的数据,很重要。

2. 库函数介绍

C语言中,可以接收键盘输入数据的库函数有格式化输入函数scanf,单个字符输入函数getchar,字符串输入函数gets。下面我们就对这几个函数的使用进行举例说明,并进行分析达到正确使用的目的。

函数一:scanf函数

主要功能是按指定格式从键盘读入数据,存入指定的存储单元中,以回车键字符作为输入结束标志。

函数的格式为:scanf (格式控制字符串,变量地址列表);

格式控制字符串由两部分组成,普通字符和格式说明符 [1] 。普通字符在键盘输入数据时将原样输入,格式说明符指定输入数据的类型,常见的有整型数据说明符%d,字符型数据说明符%c,单精度数据说明符%f等;变量地址列表,由地址运算符“&”后跟变量名组成。

例题1:整型数据和实型数据的输入

代码如下:

分析:先使用输出语句在屏幕上输出提示信息,请用户输入变量的值,这是使用输入语句时,常使用的操作方式。执行输入语句,等待用户从键盘输入数据。从程序中可以看出当只是使用%d或%f作为格式说明时,输入时可以以空格,TAB或回车键作为分隔符。

例题2:带分隔符的数据输入

代码如下:

运行程序:

输入10,20,30;则a = 10,b = 20,c = 30;特别注意中间的分隔符,不能少,否则出错。

例题3:带分隔符的数据输入

代码如下:

运行程序:

输入a = 10,b = 20,c=30

结果a = 10,b = 20,c = 30;特别注意中间的分隔符“a=”,“b=”,“c=”不能少,否则出错。

分析:以上例题可以看出,输入函数scanf格式控制部分中除格式说明字符外若还有其他字符,键盘输入数据时应输入与这些字符相同的字符。所以建议尽量少使用其他字符作为格式说明符。

例题4:字符型数据输入

代码如下:

运行程序:

若输入ABC则c1 = A,c2 = B,c3 = C赋值正确。

若输入A,B,C则c1 = A,c2=,c3 = B结果发现c2是空格符,c3是字符B,它们的值出错了。

分析:键盘输入字符型数据时,空格字符和转义字符会作为有效字符输入。字符型数据输入应连续输入,中间不能有空格字符,否则会作为有效字符输入。

例题5:多种类型数据输入

代码如下:

运行程序:

输入15A19.5,则a = 15,b = A,c = 19.5

若程序中的输入语句改为scanf(“%d%f%c”,&a,&c,&b);则执行时应这样输入数据

输入15,19.5A才能保证a = 15,b = A,c = 19.5。

分析:当同一输入函数语句进行不同类型的数据输入时,可以根据格式字符的含义分隔字符。如上例,程序运行中连续输入整型数据15,字符型数据“A”和实型数据19.5,使用字符数据“A”把整数和实数分隔了,可以实现不同变量的正确赋值。特别注意15与“A”字符之间不能有任何分隔符,否则会作为有效字符赋值给字符变量b。而修改后的输入语句,整型数据和实型数据之间需要空格字符进行分隔,而实型数据和字符型数据之间就不需要分隔符了。

由上可以得出结论,使用scanf函数输入数据时,格式控制部分尽量只使用格式控制字符,在输入整型和实型数据时使用分隔符分隔数据,在输入字符型数据时不使用任何分隔符。

函数二:getchar函数

函数的功能是从键盘读入一个字符 [2] 。

函数的格式是:getchar();函数的返回值是从键盘输入的字符。

例题6:单个字符数据输入

代码如下:

运行程序:输入A,则输出A

分析:getchar函数完全可以用scanf函数代替,不同之处前者语法简单,使用起来更简便,但使用范围小。而后者一条函数语句可以实现多个多种数据类型的数据的输入。根据程序输入数据的实际需要,合理选择输入函数。

函数三:gets函数

函数的功能是从键盘输入一个字符串放入字符数组或字符指针所指向的存储单元中 [3] ,以回车键作为输入结束,并自动添加字符串结束标志字符“\0”。

函数的格式为:gets (字符数组或字符指针)。特别注意:输入字符串的长度应小于字符数组的长度。

例题7:字符串数据输入

代码如下:

运行程序:

输入Hellotheworld!

输出Hellotheworld!

分析:gets函数从键盘接收一个字符串,且字符串中可以包含空格/tab字符。

scanf函数可以通过使用格式字符%s实现字符串的输入,但缺点是当遇到字符串中有空格/tab字符时,会自动认为字符串输入结束,不再接收数据输入。

如上例中,字符串输入语句若换为scanf(“%s”,str),依然是输入原字符串Hellotheworld!,则输出为Hello,因为遇到空格符后scanf函数就认为输入结束了。要想把字符串的内容都接收了,可以定义3个字符串来存储。代码如下:

但使用gets函数一条语句gets(str)就可以解决这个问题。

由上可以得出,scanf函数虽然功能强大,但在字符串的输入方面使用gets函数更方便,简洁。

3. 总结

通过以上的例题和分析可以得出如下结论:

1) scanf函数是格式输入函数,可以实现任意数据类型任意多个数据的输入。输入时根据不同的数据类型使用不同的分隔符,整型和实型数据使用空格/tab/空格字符分隔,字符型数据不使用分隔符。

2) getchar函数是字符输入函数,实现单个字符的输入,语法简单,仅实现字符数据的输入。

3) gests函数是字符串输入函数,实现字符数组或字符指针的赋值,接收数据时遇到回车字符就认为数据输入结束。

scanf函数功能最强大,很多时候可以替代getchar函数和gets函数。

4. 结束语

本文通过例题运行程序对C语言中的不同键盘输入函数进行了举例和分析,总结了每种函数的使用规则,提出了使用每种输入函数时的注意事项,确保正确使用它们输入数据。

文章引用

高 葵,付晓翠,李蔚妍. C语言程序设计中键盘输入数据的方法分析
Method Analysis of Keyboard Input Data in C Language Programming[J]. 计算机科学与应用, 2019, 09(02): 323-327. https://doi.org/10.12677/CSA.2019.92037

参考文献

  1. 1. 谭浩强. C语言程序设计[M]. 北京: 清华大学出版社, 2016: 88-90.

  2. 2. 王玉存. C语言基础教程[M]. 北京: 中国农业出版社, 2016: 102-110.

  3. 3. 徐洪丽. C语言程序设计[M]. 北京: 北京师范大学出版社, 2018: 85-90.

期刊菜单