收藏 分享(赏)

c语言 输入和输出.ppt

上传人:精品资料 文档编号:10423243 上传时间:2019-11-09 格式:PPT 页数:22 大小:246.50KB
下载 相关 举报
c语言 输入和输出.ppt_第1页
第1页 / 共22页
c语言 输入和输出.ppt_第2页
第2页 / 共22页
c语言 输入和输出.ppt_第3页
第3页 / 共22页
c语言 输入和输出.ppt_第4页
第4页 / 共22页
c语言 输入和输出.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、C语言程序设计-第3章,1,第3章 标准输入与输出,3.1 概述,3.2 字符输入输出函数,3.3 格式化输入和输出函数,3.4 输入和输出函数的讨论,C语言程序设计-第3章,2,通过终端输入(如键盘、鼠标等),也称为标准输入(standard input),直接向终端输出(如显示器、打印机等),也称为标准输出(standard output)。,3.1 概述,C语言本身没有提供输入输出语句,C语言中的所有I/O操作都是通过函数调用来实现,而这些并非C语言一部分的输入输出函数均以目标级程序的方式提供,并存放在一个C标准函数库中。,每一个标准库都有一个相应的头文件,该头文件包含了该库中所有函数的

2、函数原型及其相关信息。在调用这些库函数时,要用预处理命令“#include”将有关的“头文件”包括到用户源程序中。标准输入输出库函数对应的头文件是“stdio.h”。stdio是standard input & output的缩写。因此,读者在调用标准输入输出库函数时,你的源程序开头应该有如下编译预处理命令:,#include 或#include“stdio.h“,C语言程序设计-第3章,3,3.2 字符输入输出函数,3.2.1 字符输出函数putchar(),putchar()函数是向屏幕一个字符, 其调用格式为:,putchar(ch);,其中ch为一个字符变量、字符常量或整型常量。,/*

3、 本程序测试多种类型数据作putchar()函数参数的输出情况 */#include main() char c=A; /* 定义字符变量并初始化 */ putchar(c); /* 输出变量C的值即字符A */ putchar(A); /* 输出字符A */putchar(x41); /* 输出字符A ,它以转义字符表示,十六进制 */ putchar(0x41); /* 直接用ASCII码值输出字符A */ putchar(101); /* 输出字符A,它以转义字符表示,八进制 */,C语言程序设计-第3章,4,3.2.2 带缓冲区的字符输入函数getchar(),getchar()函数的

4、功能是从标准输入文件(通常是键盘,亦指磁盘文件)读取一字节代码(即一个字符),并回显。所谓回显,是指输入一个字符的同时又在屏幕上显示出该字符。这是标准C提供的字符输入函数,因此也是最常用的字符输入(尤其是键盘输入)函数。,键盘缓冲区(实际上应该称作输入流即stdin 流)。所谓键盘缓冲区,是指在内存开辟的一片临时单元,用来暂时存放从键盘输入的字符。getchar()函数是带键盘缓冲区的输入函数,是指当从键盘输入字符时,这些字符先存放在键盘缓冲区,如果不敲回车键,getchar()函数并没有真正被执行(即所谓被激活);仅当回车键也被送入键盘缓冲区后,getchar()函数才从键盘缓冲区中读取一个

5、字符。,C语言程序设计-第3章,5,强调以下三点:,(1) 调用getchar()函数输入字符时,必须用另一个变量(字符变量或整型变量)接收输入的字符。例如:ch = getchar();,(2) 调用getchar()函数输入字符时,仅当敲入回车键后,函数才被激活。,(3) 调用该函数时,输入的每一个字符,包括空白符(即空格、制表符和回车符),都被送存到键盘缓冲区。,C语言程序设计-第3章,6,/* 本程序调用getchar()函数输入一个字符 */#include main() char c; /* 定义字符变量 */ c = getchar(); /* 接收键盘输入的一个字符 */ pu

6、tchar(c); /* 输出该字符 */ putchar(n);,C语言程序设计-第3章,7,3.2.3 不带缓冲区的字符输入函数getch()和getche(),这是某些编译器,譬如Turbo C新增加的两个字符输入函数,这两个函数都是从键盘上读入一个字符。两者的区别是: getch()函数将读入的字符不回显在屏幕上, 而getche()函数却将读入的字符回显到显示屏幕上。,C语言程序设计-第3章,8,/* 本程序调用getchar()函数输入一个字符 */#include main() char c, ch;c=getch(); /* 从键盘上读一字符不回显送给变量c */ putcha

7、r(c); /* 输出该字符*/ ch=getche();/* 从键盘读一字符送给变量ch并回显 */ putchar(ch);/* 输出该字符*/ ,C语言程序设计-第3章,9,3.3 格式化输入和输出函数,3.3.1 printf()函数,用于按指定格式向标准输出设备(屏幕)输出。有两种形式:,printf(“字符串“);,例如,下面的语句:printf(“How are you!n“); 是在屏幕上输出这样一行:How are you!,这种形式的输出并没有指定输出格式。,C语言程序设计-第3章,10,另一种形式是:,printf(“, ),“格式控制串”是由0个或多个格式转换说明组成的

8、一个字符串序列。格式转换说明的一般形式为:%flag width.prechlL输出格式符,格式修饰符(见表3-2),见表3-1,printf(“%d”, a);,printf(“%d%f“, a,x);,printf(“a=%d, b=%d, a+b=%dn“, a,b,a+b);,printf(“a=%-d, x=%+8.2f, x+y=%Lfn“, a,x,x+y);,左对齐,正数也要加正号,输出共占8位,其中小数占两位,输出为long double型,C语言程序设计-第3章,11,3.3.2 scanf()函数,scanf()函数的一般形式为:int scanf(“,),“格式控制串”

9、是由0个或多个格式转换说明组成的一个字符串序列。格式转换说明的一般形式为:%*widthh/l/L输入格式符,格式修饰符(见表3-4),见表3-3,格式转换说明的作用是引导对下一输入项进行转换。,“地址列表”中给出一个或多个输入项,输入项之间用逗号分隔。,从概念上讲,输入项的表示形式是指针,指向存储输入数据的变量。因此,输入项必须指明变量的地址。C语言提供了一个取变量地址的运算符“&”,只要将它作用在变量上,就能得到该变量的地址。例如,&a,&b分别表示变量a和变量b 的地址。,C语言程序设计-第3章,12,例如,若要为int变量a和b从键盘输入数据,如果写作: scanf(“%d%d“, a

10、,b); 是不正确的。可用如下语句实现:scanf(“%d%d“, &a,&b);,如果将上述语句应改为:scanf(“%d,%d“, &a,&b); 即在两个格式转换说明之间插入一个逗号,输入数据时也必须输入一个逗号,如:123,4567,要注意的是,不要轻易将“c”格式与其它格式混在一起用,以免出错。例如,设a为int型变量,ch是char型变量,对于语句:scanf(“%d%c“,&a,&ch); 若输入为 29A /* 表示空格符 */ 其结果是将数值29送a,而将一个空格字符送ch。,C语言程序设计-第3章,13,3.4 关于格式化输入和输出函数的进一步讨论,3.4.1 printf

11、()和scanf()函数的返回值问题,若成功,printf()函数返回输出的字符个数,出错时返回负数。,/* 本程序测试printf()函数的返回值 */#includemain()int count; /* 定义count,用来接收返回值 */float r1 = 12345.12345678, r2 = 123.123456789;count = printf(“r1 = %fnr2 = %fn“,r1,r2); printf(“count=%dn“,count);/* 输出printf()函数的返回值 */程序输出:r1 = 12345.123047r2 = 123.123459coun

12、t=34,C语言程序设计-第3章,14,scanf()函数也具有返回值,所不同的是,scanf()函数执行成功时的返回值是成功读取的变量数;如果第一个输入项读入就出错,则返回0。,/* 本程序测试scanf()函数的返回值 */#includeint main()int count, a,b,c;count = scanf(“%d,%d,%d”, &a, &b, &c);printf(“a=%d,b=%d,c=%dtcount=%dn“,a, b, c,count);执行上述程序,如果输入为:123,1234,12345则输出结果为:a=123,b=1234,c=12345 count=3,C

13、语言程序设计-第3章,15,3.4.2 printf()函数的p格式符的应用,在printf()函数中,p格式符用来输出指针的值,即指针所指对象的首地址。利用p格式符的这一特性,我们可以了解变量的空间分配情况。下面来看一个例子。,/* 本程序测试变量的空间分配情况 */#includeint main()int i,j,k;printf(“&i=%p,&j=%p,&k=%pn“, &i,&j,&k);执行后的输出为(不同的系统环境可能输出值不同,下面是Turbo 2.0的一种输出):&i=650B:0FD6,&j=650B:0FD8,&k=650B:0FDA,C语言程序设计-第3章,16,3.

14、4.3 scanf()函数的“%”格式应用问题,/* 用“%”格式接收指定范围的字符 */#includeint main()int *ptr; /* 定义一个指针 */scanf(“%abcd”, ptr);printf(“ptr=%sn”,ptr); 设输入为:dabcaaagade程序输出为:ptr=dabcaaa,C语言程序设计-第3章,17,/* 用“%”格式接收指定范围的字符 */#includeint main()int *ptr; /* 定义一个指针 */scanf(“%bcd,”, ptr);printf(“%sn”,ptr); 设输入为:How are you,John!

15、程序输出为:How are you,注:这是由于逗号作为不可接受字符,而作为字符串的定界符.,C语言程序设计-第3章,18,/* 本程序可接收任意字符串的输入 */,#includeint main()int *ptr; /* 定义一个指针 */scanf(“%n”, ptr);printf(“ptr=%sn”,ptr);设输入为:How are you!程序输出为: How are you!,C语言程序设计-第3章,19,3.4.4 scanf()函数应用中两个最常见的问题,1.空白符问题,/* 本程序测试格式转换说明“%dn“的应用情况 */#includeint main(void) i

16、nt a;printf(“Please input the data: “);scanf(“%dn”,问题: 被要求输入两个数才能正常结束,原因: 程序要求输入空白符,而空白符是数据的定界符,C语言程序设计-第3章,20,2标准输入流中残留字符问题,/* 本程序测试标准输入流中残留字符的情况 */#include int main(void)int a;char c;scanf(“%d“, ,注:在这里输入一个整数并按回车键后,程序就输出了结果!,C语言程序设计-第3章,21,1234,n,a,1234,A,注:在这里输入一个整数1234并按回车键后,就相当于1234n,这个n就输入给字符变量c!,C语言程序设计-第3章,22,本章全部练习都要做.做在练习本上.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报