c语言putchar和scanf,C语言学习——getchar()、putchar()、scanf和printf用法

C语言学习——getchar()、putchar()、scanf和printf用法

在C语言中,数据的输入输出是利用系统函数来实现的。设计人员只要调用相关的系统函数,就可以完成各种数据的输入输出工作。而格式化输入输出函数每次能输入输出若干个基本类型的数据,如带符号和不带符号的整型、短整型、长整型、单精度和双精度实型、单个字符、字符串。这种函数不但能输入输出各种基本类型的数据,而且还可以控制输入输出时每个数据的宽度,对实型数据还可以控制小数位数等。

字符数据的输入函数 getchar()

该函数的主要功能就是从键盘上读取单个字符,作为函数的返回值。

函数调用格式:getchar()

函数形式参数:无。

函数功能 :从键盘读取单个字符。

函数返回值 :读取的单个字符。

使用该函数时,一般使用字符型或整型变量来接收该函数的返回值,即键盘上输入的单个字符。通常使用方式是采用下列语句:

变量=getchar();

请读者注意,键盘上输入的任何一个键都是有效的,而且每次输入都需要按“Enter”键(回车换行符)来表示输入的结束。对于一次输入的字符,如果程序中没有使用完,将会自动保留下来,留作下次从键盘上读取数据时使用

字符数据的输出函数putchar()

该函数的主要功能就是将字符型常量、字符型变量或字符型表达式值对应的单个字符输出到显示器显示。

函数调用格式:putchar©

函数形式参数:c是字符常量、字符变量、字符型表达式、整型表达式。

函数功能 :将参数c对应的字符输出到显示器上。

函数返回值 :c对应的字符。

该函数的一般使用方式是利用下列语句:

putchar(表达式);

其中的表达式最终结果应是某个字符。

#include

void main( void )

{

char c1='1'; int i1=65;

putchar(c1); putchar('\n');

putchar(i1); putchar(c1+17);

}

结果分析:

1 (在字符1的后面有一个回车换行符)

AB (为什么输出c1+17为字母“B”)

格式化输入——scanf()函数

本函数能够从键盘上输入各种基本类型的数据,并且可以控制输入时数据的类型(即整型、实型、字符型、字符串)、数据的宽度(即输入字符的个数)。

函数调用格式:scanf(输入格式字符串,输入变量地址表)

函数形式参数:输入格式字符串是由控制输入格式的格式字符等组成的字符串。输入变量地址表是用逗号分隔的若干个接收输入数据的变量地址。

函数功能

:按照“输入格式字符串”中规定的输入格式,从键盘上读取若干个数据按“输入变量地址表”中变量自左向右的顺序,依次存入对应的变量。

函数返回值 :从键盘上读取数据的个数

1.输入格式字符串

1.输入格式字符串是由“格式字符”和“非格式字符”组成的,通常是一个字符串常量。

2.“非格式字符”必须原样原位置输入。可以没有,通常是作为输入时数据的间隔符号,常用的是“逗号”。

3.“格式字符”分为整型、长整型、单精度实型、双精度实型、字符型、字符串型。每个格式字符对应一个要输入的数据,从键盘上输入数据时,必须严格按照规定的格式输入。

4. 格式字符、对应的数据类型、数据的输入形式和数据输入格式如表所示。

5d8421f2a0bba024680e2d075c3064e0.png

2.输入变量地址表

输入变量地址表是由接受输入数据的变量地址组成的,变量地址之间用“逗号”分隔。

变量的地址必须写成“&变量名”。在基本数据类型中,只有字符串没有对应的字符串变量,如何接受输入的字符串将在第4章(数组)中介绍。

3.使用格式化输入函数时,需要注意下列几点:

对接受数据的变量,如果数据不超出范围,则整型和字符型是可以通用的。

所需数据从键盘上输入结束后,要跟一个Enter键表示输入结束。

用%c作为输入格式字符时,作用和“getchar()”完全相同,仅接受单个字符。由于每次输入都需要用Enter键结束,为了避免多余字符留作下次使用,可以采用“%2c”的格式,输入形式为“字符←┘”

如果一次要输入多个数据,这些数据可以用下列三种方法来分隔:假定,要使整型变量a、b、c分别获得12、3456、789。

**方法一 选用合适的宽度m来分隔。**

例如,语句如下:

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

从键盘上只要输入:123456789←┘

**方法二 用系统规定的分隔符号(空格符、Tab符、回车换行符)。**

例如,语句如下:scanf("%d%d%d",&a,&b,&c);

从键盘上只要输入:12□3456□789←┘(其中的□表示空格符)

或者输入:12 Tab符3456 Tab符789←┘

或者输入:12 ←┘3456 ←┘789←┘

**方法三 用非格式字符作为分隔符号(常用逗号)。**

例如,语句如下:scanf("%d,%d,%d",&a,&b,&c);

从键盘上只要输入:12,3456,789←┘

程序中常用的输入格式如下:

整型数据 %d

长整型数据 %ld

单精度实型数据 %f

双精度实型数据 %lf

字符型数据 %c

字符串数据 %s

例 scanf(“%d%o%x”,&a,&b,&c);

printf(“a=%d,b=%d,c=%d\n”,a,b,c);

输入 123 123 123

输出 a=123,b=83,c=291

例 scanf(“%d,%d”,&a,&b)

输入 3,4

则3=a, 4 =b

例 int a,b,c;

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

printf("%d\n%d\n%d\n",a,b,c);

输入 a=12,b=24,c=36

//(此时a=、b=、c=应原样输入)

格式化输出——printf()函数

本函数能够将若干个各种基本类型的数据送到显示器上显示,并且可以控制显示时数据的类型(即整型、实型、字符型、字符串)、数据的宽度(即输出字符的个数)、实数的小数位。

函数调用格式:printf(输出格式字符串,输出表达式表)

函数形式参数:输出格式字符串是由控制输出格式的格式字符等组成的字符串。输出表达式表是用逗号分隔的若干个表达式。

函数功能 :依次计算“输出表达式表”中诸表达式的值,然后按照“输出格式字符串”中对应的格式字符规定的格式输出到显示器上。

函数返回值 :输出数据的个数。

1.输出格式字符串

输出格式字符串是由“格式字符”和“非格式字符”组成的,通常是一个字符串常量。

“非格式字符”可以作为输出数据的间隔或说明,输出时按原样原位置输出。常用的是“逗号”、“\t”、“\n”,或者“变量=”,前者是作为数据的间隔、后者是对数据的说明。

“格式字符”分为整型、长整型、实型、字符型、字符串型。输出数据时,必须严格按照规定的格式输出。

格式字符、对应的数据类型、数据的输出形式和数据输出格式如表所示。

7b25cd0a4d2909146b52dd0f09ffef7f.png

2.输出表达式表

使用输出表达式表是若干个、用“逗号”分隔的表达式组成的。特别要注意的是,这些表达式虽然用“逗号”分隔,但不是“逗号表达式”。

使用格式化输出函数时,需要注意下列几点:

(1)对输出的数据,如果数据不超出范围,则整型和字符型可以通用。

(2)其中的m或n是一个整型常量,m主要用来控制输出数据的宽度,n用来控制小数位数(对实型数据)或字符串的实际输出字符数(对字符串数据)。m和n可以省略,省略时按数据的实际宽度输出。

(3)在两个输出数据之间不会自动增加一个空格符;

例如,“printf("%d%d%d",12,3456,789);”的输出结果将是123456789。

在所有数据输出之后,也不会自动增加一个回车换行符。

例如,“printf("%d",12); printf("%d",3456);”的输出结果将是123456。

(4)如果一次要输出多个数据,这些数据可以用下列三种方法来分隔:

设有数据定义语句:int a=12,b=3456,c=789;

方法一 选用合适的宽度m来分隔。

例如,语句如下:printf("%6d%6d%6d\n",a,b,c);

则输出结果如下:□□□□12□□3456□□□789←┘

方法二 用非格式字符作为分隔符号(常用逗号)。

例如,语句如下:printf("%d,%d,%d\n",a,b,c);

输出结果如下:12,3456,789←┘

方法三 用非格式字符作为分隔符号(常用变量名=)。

例如,语句如下:printf("a=%d b=%d c=%d\n",a,b,c);

输出结果如下:a=12 b=3456 c=789←┘

(5)程序中常用的输出格式:

带符号整型数据 %d

不带符号整型数据 %u

带符号长整型数据 %ld

不带符号长整型数据 %lu

实型数据 %m.nf

字符型数据 %c

字符串数据 %s

设程序段如下:char c1='1',c2='A';int i1=-2; float f1=-123.456;

printf("f1=%f,%8.2f,%-8.1f,%e,%g\n",f1,f1,f1,f1,f1);

输出结果:

f1=-123.456001,□-123.46,-123.5□□,-1.234560e+002,-123.456←┘

printf("c1=%d,c2+2=%3c%-3c\n",c1,c2+2,'a');

输出结果:c1=49,c2+2=□□C,a□□←┘

注意:%-m.nf,无-号,右对齐,左补空格(有-号,左对齐,右补空格),m为总宽度,n为精度!

#include

void main( void )

{

printf("s1=%ss2=%7.3s,s3=%-7.2s\n","ABCD","ABCD","ABCD");

}

8e669485f22cf08391e061f3ae6257f3.png

#include

void main( void )

{

printf("%s\n%7.2s\n%-5.3s\n", "CHINA", "CHINA","CHINA");

}

3db683d7ed1235ce6b84b7432da00dcd.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值