版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计---第3章1第3章标准输入与输出3.1概述3.2字符输入输出函数3.3格式化输入和输出函数3.4输入和输出函数的讨论C语言程序设计---第3章2
通过终端输入(如键盘、鼠标等),也称为标准输入(standardinput),直接向终端输出(如显示器、打印机等),也称为标准输出(standardoutput)。3.1概述C语言本身没有提供输入输出语句,C语言中的所有I/O操作都是通过函数调用来实现,而这些并非C语言一部分的输入输出函数均以目标级程序的方式提供,并存放在一个C标准函数库中。
每一个标准库都有一个相应的头文件,该头文件包含了该库中所有函数的函数原型及其相关信息。在调用这些库函数时,要用预处理命令“#include”将有关的“头文件”包括到用户源程序中。标准输入输出库函数对应的头文件是“stdio.h”。stdio是standardinput&output的缩写。因此,读者在调用标准输入输出库函数时,你的源程序开头应该有如下编译预处理命令:
#include<stdio.h>
或
#include"stdio.h"C语言程序设计---第3章33.2字符输入输出函数3.2.1字符输出函数putchar()putchar()函数是向屏幕一个字符,其调用格式为:putchar(ch);
其中ch为一个字符变量、字符常量或整型常量。/*本程序测试多种类型数据作putchar()函数参数的输出情况*/#include<stdio.h>main(){charc=’A’;/*定义字符变量并初始化*/
putchar(c);
/*输出变量C的值即字符A*/
putchar(’A’);/*输出字符A*/putchar(’\x41’);/*输出字符A,它以转义字符表示,十六进制*/
putchar(0x41);/*直接用ASCII码值输出字符A*/putchar(’\101’);/*输出字符A,它以转义字符表示,八进制*/}C语言程序设计---第3章43.2.2带缓冲区的字符输入函数getchar()getchar()函数的功能是从标准输入文件(通常是键盘,亦指磁盘文件)读取一字节代码(即一个字符),并回显。所谓回显,是指输入一个字符的同时又在屏幕上显示出该字符。这是标准C提供的字符输入函数,因此也是最常用的字符输入(尤其是键盘输入)函数。
键盘缓冲区(实际上应该称作输入流即stdin流)。所谓键盘缓冲区,是指在内存开辟的一片临时单元,用来暂时存放从键盘输入的字符。getchar()函数是带键盘缓冲区的输入函数,是指当从键盘输入字符时,这些字符先存放在键盘缓冲区,如果不敲回车键,getchar()函数并没有真正被执行(即所谓被激活);仅当回车键也被送入键盘缓冲区后,getchar()函数才从键盘缓冲区中读取一个字符。C语言程序设计---第3章5强调以下三点:
(1)调用getchar()函数输入字符时,必须用另一个变量(字符变量或整型变量)接收输入的字符。例如:
ch=getchar();
(2)调用getchar()函数输入字符时,仅当敲入回车键后,函数才被激活。(3)调用该函数时,输入的每一个字符,包括空白符(即空格、制表符和回车符),都被送存到键盘缓冲区。C语言程序设计---第3章6/*本程序调用getchar()函数输入一个字符*/#include<stdio.h>main(){charc;
/*定义字符变量*/c=getchar();
/*接收键盘输入的一个字符*/putchar(c);/*输出该字符*/
putchar(’\n’);
}C语言程序设计---第3章73.2.3不带缓冲区的字符输入函数getch()和getche()
这是某些编译器,譬如TurboC新增加的两个字符输入函数,这两个函数都是从键盘上读入一个字符。两者的区别是:getch()函数将读入的字符不回显在屏幕上,而getche()函数却将读入的字符回显到显示屏幕上。C语言程序设计---第3章8/*本程序调用getchar()函数输入一个字符*/#include<stdio.h>main(){charc,ch;
c=getch();/*从键盘上读一字符不回显送给变量c*/
putchar(c);/*输出该字符*/
ch=getche();/*从键盘读一字符送给变量ch并回显*/
putchar(ch);/*输出该字符*/
}C语言程序设计---第3章93.3格式化输入和输出函数3.3.1printf()函数
用于按指定格式向标准输出设备(屏幕)输出。有两种形式:printf("字符串");
例如,下面的语句:
printf("Howareyou!\n");是在屏幕上输出这样一行:
Howareyou!这种形式的输出并没有指定输出格式。C语言程序设计---第3章10另一种形式是:printf("<格式控制串>",<参数表>)
“格式控制串”是由0个或多个格式转换说明组成的一个字符串序列。格式转换说明的一般形式为:
%[flag][[width][.prec]][[h][l][L]]输出格式符格式修饰符(见表3-2)见表3-1printf(“%d”,a);printf("%d%f",a,x);printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);printf(“a=%-d,x=%+8.2f,x+y=%Lf\n",a,x,x+y);左对齐
正数也要加正号
输出共占8位,其中小数占两位输出为longdouble型C语言程序设计---第3章113.3.2scanf()函数
scanf()函数的一般形式为:
intscanf("<格式控制串>",<地址列表>)
“格式控制串”是由0个或多个格式转换说明组成的一个字符串序列。格式转换说明的一般形式为:
%[*][width][h/l/L]输入格式符
格式修饰符(见表3-4)
见表3-3
格式转换说明的作用是引导对下一输入项进行转换。
“地址列表”中给出一个或多个输入项,输入项之间用逗号分隔。
从概念上讲,输入项的表示形式是指针,指向存储输入数据的变量。因此,输入项必须指明变量的地址。C语言提供了一个取变量地址的运算符“&”,只要将它作用在变量上,就能得到该变量的地址。例如,&a,&b分别表示变量a和变量b的地址。C语言程序设计---第3章12
例如,若要为int变量a和b从键盘输入数据,如果写作:
scanf("%d%d",a,b);是不正确的。可用如下语句实现:
scanf("%d%d",&a,&b);
如果将上述语句应改为:
scanf("%d,%d",&a,&b);即在两个格式转换说明之间插入一个逗号,输入数据时也必须输入一个逗号,如:
123,4567↙
要注意的是,不要轻易将“c”格式与其它格式混在一起用,以免出错。例如,设a为int型变量,ch是char型变量,对于语句:
scanf("%d%c",&a,&ch);若输入为
29□A/*□表示空格符*/其结果是将数值29送a,而将一个空格字符送ch。
C语言程序设计---第3章133.4关于格式化输入和输出函数的进一步讨论3.4.1printf()和scanf()函数的返回值问题
若成功,printf()函数返回输出的字符个数,出错时返回负数。/*本程序测试printf()函数的返回值*/#include<stdio.h>main(){intcount;/*定义count,用来接收返回值*/floatr1=12345.12345678,r2=123.123456789;
count=printf("r1=%f\nr2=%f\n",r1,r2);
printf("count=%d\n",count);/*输出printf()函数的返回值*/}
程序输出:
r1=12345.123047r2=123.123459count=34
C语言程序设计---第3章14scanf()函数也具有返回值,所不同的是,scanf()函数执行成功时的返回值是成功读取的变量数;如果第一个输入项读入就出错,则返回0。/*本程序测试scanf()函数的返回值*/#include<stdio.h>intmain(){intcount,a,b,c;
count=scanf(“%d,%d,%d”,&a,&b,&c);
printf("a=%d,b=%d,c=%d\tcount=%d\n",a,b,c,count);
}
执行上述程序,如果输入为:
123,1234,12345↙
则输出结果为:
a=123,b=1234,c=12345count=3C语言程序设计---第3章153.4.2printf()函数的p格式符的应用
在printf()函数中,p格式符用来输出指针的值,即指针所指对象的首地址。利用p格式符的这一特性,我们可以了解变量的空间分配情况。下面来看一个例子。/*本程序测试变量的空间分配情况*/#include<stdio.h>intmain(){inti,j,k;
printf("&i=%p,&j=%p,&k=%p\n",&i,&j,&k);
}
执行后的输出为(不同的系统环境可能输出值不同,下面是Turbo2.0的一种输出):
&i=650B:0FD6,&j=650B:0FD8,&k=650B:0FDAC语言程序设计---第3章163.4.3scanf()函数的“%[]”格式应用问题/*用“%[]”格式接收指定范围的字符*/#include<stdio.h>intmain(){int*ptr;/*定义一个指针*/scanf(“%[abcd]”,ptr);
printf(“ptr=%s\n”,ptr);
}
设输入为:
dabcaaagade↙
程序输出为:
ptr=dabcaaaC语言程序设计---第3章17/*用“%[]”格式接收指定范围的字符*/#include<stdio.h>intmain(){int*ptr;/*定义一个指针*/scanf(“%[^bcd,]”,ptr);
printf(“%s\n”,ptr);
}
设输入为:
Howareyou,John!↙
程序输出为:
Howareyou
注:这是由于逗号作为不可接受字符,而作为字符串的定界符.C语言程序设计---第3章18/*本程序可接收任意字符串的输入*/#include<stdio.h>intmain(){int*ptr;/*定义一个指针*/scanf(“%[^\n]”,ptr);
printf(“ptr=%s\n”,ptr);
}
设输入为:
Howareyou!↙
程序输出为:
Howareyou!C语言程序设计---第3章193.4.4scanf()函数应用中两个最常见的问题1.空白符问题/*本程序测试格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建材施工承揽合同范例
- 内江商场保安合同范例
- 合同范例里序号
- 聘请医师合同范例
- 商标授权转让服务合同范例
- 县城商铺售卖合同范例
- 农村大棚用人合同范例
- 铜仁幼儿师范高等专科学校《网络攻防》2023-2024学年第一学期期末试卷
- 铜川职业技术学院《认知智能与智能通信技术》2023-2024学年第一学期期末试卷
- 同济大学《新能源技术经济学》2023-2024学年第一学期期末试卷
- 2024-2028年有机肥市场发展现状调查及供需格局分析预测报告
- 制作纸杯蛋糕(课件)全国通用六年级下册综合实践活动
- 事业单位会计讲解
- 2024年食品安全考试题库及答案
- 2021年10月自考00058市场营销学试题及答案含解析
- 精准医学演讲课件
- JC-T935-2004玻璃纤维工业用玻璃球
- 合同签订的风险防范课件
- 【星巴克国际避税的案例分析12000字(论文)】
- 文献研究法与文献综述课件
- 护理责任组长工作总结
评论
0/150
提交评论