首页 百科知识 和格式输入函数(

和格式输入函数(

时间:2022-10-17 百科知识 版权反馈
【摘要】:getchar()函数需要交互输入,接收到输入字符之后才继续执行程序。也可用printf()函数输出:函数getchar()和putchar()是C语言的标准库函数,如果在一个函数中要调用getchar()函数和putchar()函数,在该函数的前面一定要加上编译预处理命令:作用是接收用户从键盘上输入的数据,按照格式控制的要求进行类型转换,然后送到由对应参数指示的变量单元中去。

2.7.2 字符输入函数getchar()和格式输入函数scanf()

1.字符输入函数getchar()

getchar()函数的作用是从终端输入一个字符。getchar()函数没有参数,其一般形式为:

  getchar()

函数的返回值就是从输入设备上得到的字符。

例2-11 输入单个字符。

img154

在运行时,如果从键盘上输入字符t并按回车键,就会在屏幕上看到输出的字符t。

t img155      (输入字符t后,按“回车”键,字符送到内存)

t      (输出变量i的值t)

注意:

(1)getchar()函数需要交互输入,接收到输入字符之后才继续执行程序。getchar()函数一次只能接收一个字符,它得到的字符可以赋给一个字符型变量或整型变量,也可以不赋给任何变量而作为表达式的一部分。如上例中的第6、7行可用下面一行代替:

  putchar(getchar());

因为getchar()的值是't',因此putchar(getchar())输出't'。也可用printf()函数输出:

  printf("%c",getchar());

(2)连续使用getchar()函数时,要注意字符的输入形式 ,例如,执行如下程序段:

  char i,j;

  i=getchar();

  j=getchar();

必须连续输入两个字符,中间不能有其他字符。

(3)函数getchar()和putchar()是C语言的标准库函数,如果在一个函数中要调用getchar()函数和putchar()函数,在该函数的前面(或本文件的开头)一定要加上编译预处理命令:

  #include"stdio.h"或#include 〈stdio.h〉

2.格式输入函数scanf()

scanf()的使用格式为:

  scanf(格式控制,参数1,参数2,…);

作用是接收用户从键盘上输入的数据,按照格式控制的要求进行类型转换,然后送到由对应参数指示的变量单元中去。例如:

  scanf("a=%d,b=%f",&a,&b);

其中,格式控制的含义同printf()函数,作用是将输入的数据转换成所指定的输入格式;参数指明输入数据所要放置的地址,所以,出现在参数位置上的变量名前要加上&运算符,表示取变量地址,如上式中的&a,&b。每个格式说明对应一个参数,如上式中的“%d”对应参数&a,“%f”对应参数&b。

例2-12 用scanf()函数输入数据。

img156

运行时按以下方式输入a、b、c的值:

20 65 234.896 img157  (输入a、b、c的值)

20,A,234.895996  (输出a、b、c的值)

scanf()函数的作用是按照a、b、c在内存的地址将a、b、c的值存进去,如图2.7.1所示。变量a、b、c的地址是在编译连接阶段分配的。

img158

图2.7.1

"%d%c%f"表示第一个数按十进制整数形式输入,第二个数按字符型(或整型)数据输入,第三个数按浮点型数据输入。输入数据时,在两个数据间用一个或多个空格隔开,也可用回车键、跳格键tab。如下面输入均合法:

①20 65 234.896img159

②20img160

65 234.896img161

③20(按tab键)65img162

234.896img163

用"%d%c%f"格式输入数据时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

20,65,234.896img164

表2.7.3列出了scanf()常用的格式字符及其作用。

表2.7.3 scanf()中常用的格式字符及其作用

img165

在格式说明中,在%和上述格式字符间可以插入以下几种附加符号(修饰符)。如表2.7.4所示。

表2.7.4 scanf()中的附加格式说明符及其说明

img166

使用scanf()函数时应注意的问题:

(1)scanf()函数中的参数形式是地址形式:&变量名(除数组或指针变量),而不是变量名。

(2)输入数据是在程序运行中输入,输入的数据个数和类型必须与格式说明符一一对应。

(3)格式控制中有普通字符时,必须照原样输入。例如:

scanf("a=%d,b=%d",&a,&b);

输入的形式是:a=32,b=28img167

(4)格式符之间若无普通字符,则:

①输入的数值型数据用空白符(空格、tab键或回车键)分隔,或指定数据输入的宽度,让系统自动按它截取所需数据,例如:

scanf("%d%d%d",&a,&b,&c);

输入:34 52 67 img168 (而34,52,67为非法)

scanf("%4d%d",&a,&b);

输入:4567893img169

系统自动将前4位(即4567)赋给变量a ,剩下的数据(即893)赋给变量b。

②输入的 char型数据不必分隔,例如:

scanf("%c%c%c",&ch1,&ch2,&ch3);

要输入:abcimg170

不能输入:a b cimg171

因为字符型变量只能容纳一个字符,这时系统把第1个字符送给变量ch1,把第2个字符送给变量ch2,把第3个字符送给变量ch3。

③注意数值型数据与char型数据的混合输入,例如:

scanf("%d%d",&m.,&n);

scanf("%c",&ch);

错误输入:32 28

aimg172

正确输入:32 28aimg173

(5)浮点型数据输入时,域宽不能用m.n形式的附加说明,即输入时不能指定精度,例如:

scanf("%5.3f",&i);

是不合法的。

(6)如果在%后有一个“*”附加说明符,表示忽略它指定的列数,例如:

scanf("%3d %*4d %2d",&i,&j);

输入如下数据:

345 6789 45img174

将345赋给变量i,%*4d表示输入4位整数但不赋给任何变量,然后再输入2位整数45赋给变量j。也就是说,第2个数据6789被忽略。在利用现成的一批数据时,有时不需要其中某些数据,可用此方法将其忽略。

(7)为了减少不必要的输入量,除了逗号、分号、空格符以外,格式控制中尽量不要出现普通字符,也不要使用'\n' 、'\t'等转义字符。

常见的编程错误2.6

img175 在表达式中使用变量之前忘记给所有的变量赋值。初值能够在定义变量时通过显式赋值语句或通过scanf()函数输入值来赋值。

img176 在scanf()函数调用中忘记在变量名的前面使用地址运算符&。

img177 在scanf()函数调用中没有包含必须输入的数据值的正确控制字符串。

img178 同一表达式多次出现的变量使用自增和自减运算符。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈