版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CHAPTE77.1StandardInputandOutput7.2FormattedOutput-Printf7.3Variable-lengthArgumentLists7.4FormattedInput–Scanf7.5FileAccess7.6ErrorHandling-StderrandExit7.6LineInputandOutput7.8MiscellaneousFunctions7.1StandardInputandOutput输入输出函数所谓输入输出是以计算机为主体而言。从计算机向外部输出设备(例如显示器)输出数据称为“输出”,从输入设备(例如键盘)向计算机输入数据称为“输入”。C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。C语言函数库中有一批“标准输入输出函数”,包括:putchar(),getchar(),printf(),scanf(),puts(),gets().在使用c语言函数时,要用到预编译命令“#include”将有关的头文件包括到源文件中;在使用标准输入输出库函数时,要用到”stdio.h”-----#include<stdio.h>或#include“stdio.h”字符数据的输入输出putchar函数(字符输出函数)
putchar函数的作用是向终端输出一个字符,例如∶
putchar(c);c可以是字符型变量或整型变量例子:
例1输出单个字符
#include<stdio.h>
voidmain(void)
{
chara,b,c;
a=‘B’;b=‘O’;c=‘Y’;
putchar(a);putchar(b);putchar(c);
putchar(‘\n’);
putchar(‘\101’);putchar(‘\\’);putchar(‘\x61’);
}程序的运行结果是∶
BOY
A\a字符数据的输入输出getchar()函数
函数的作用是从终端输入一个字符。此函数没有参数,其一般形式为∶
getchar()
返回下一从标准输入设备上输入的字符的ASCII码,如果到文件末尾则返回EOF。例2
#include<stdio.h>/*该预处理命令在tc里不可少*/voidmain(void)
{
charc;c=getchar();
putchar(c);
/*putchar(getchar());*//*printf(“%c”,getchar());*/
}7.2FormattedOutput-Printfintprintf(char*format,arg1,arg2)/*translatesinternalvaluestocharacters*/Ordinarycharacters
原始字符Conversionspecifications
格式说明formatReturnsthenumberofcharactersprinted返回输出字符的数量7.2FormattedOutput-PrintfOrdinarycharacters:
characterswhicharecopiedtotheoutputstream;
/*原样输出的字符串*/Conversionspecifications:
beginwitha%andendwithaconversioncharacter.
/*以%为开始,到转义字符截至*/printf(“thisisainterger:
%d”,ival);7.2FormattedOutput-Printfprintf(“Theresultis:
%d,%d”,x,y);OrdinarycharactersConversionspecificationsConversionspecificationsVariableslist7.2FormattedOutput-Printf格式字符
对不同类型的数据用不同的格式字符。有以下几种格式字符∶
⒈d格式符
用来输出整数,整数是以十进制的形式出现。有以下几种用法∶
①%d,按照整数的实际长度输出。
②%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格;如果大于m,则按照实际位数输出。若a=123,d=12345则:printf(“%4d,%4d”,a,b);
输出:□123,12345(□代表空格)③%ld,输出长整型数据。
如:longa=135790;printf(“%ld”,a);/*若用printf(“%d”,a);可以吗?*/
输出:135790
对长整型数据也可以制定字段宽度,如printf(“%8ld”,a);
输出:□□135790⒉o格式符
以八进制形式输出整数。由于是将内存单元中的各位的值按照八进制形式输出,因此输出的数值不带符号。对长整型,用“%lo”格式,同样可以加字段宽度。如:inta=-1;printf(“%d,%o“,a,a);输出结果为:-1,1777777.2FormattedOutput-Printf⒊x格式符
以十六进制形式输出整数。同样不会出现负的十六进制数。⒋u格式符
用来输出unsigned型数据,即无符号数,以十进制形式输出。实际上,一个有符号整数也可以用%u格式输出;反之,一个unsigned也可以用%d、%o、%x格式输出。Inta=-1;
printf(“%x,%d,%o”,a,a,a);输出:ffff,-1,177777Main()
{
unsignedinta=65535;
intb=-2;
printf(“a=%d,%o,%x,%u\n”,a,a,a,a);
printf(“a=%d,%o,%x,%u\n”,b,b,b,b);
}运行结果:-1,177777,ffff,65535
-2,177776,fffe,655347.2FormattedOutput-Printf⒌c格式符
用来输出一个字符。⒍s格式符
用来输出一个字符串。有几种用法
①%s,按照实际长度输出字符串。②%ms,输出的字符串占m列。如果字符串的长度大于m,则突破m的限制,将字符串全部输出;反之,则左补空格。③%-ms,如果字符串的长度小于m,则在m范围内,字符串向左靠,右补空格。④%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。⑤%-m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的左侧,右补空格。如果n>m,则m自动取n值,以保证n个字符正常输出。7.2FormattedOutput-Printf:%s: :hello,
world::%10s: :hello,world::%.10s: :hello,worl::%-10s: :hello,world::%.15s: :hello,world::%-15s: :hello,world::%15.10s: :hello,worl::%-15.10s: :hello,worl:7.2FormattedOutput-Printf⒎f格式符
用来输出实数,以小数形式输出。有以下几种用法∶①%f,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出6位小数。②%m.nf,指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则左补空格。③%-m.nf与%m.nf基本相同,只是输出的数值向左端靠,右端补空格。main()
{floatf=123.456;
printf(“%f□□%10f□□%10.2f□□%.2f□□%-10.2f\n”,f,f,f,f,f);}输出如下:
123.456001□□123.456001□□□□□□123.46□□123.46□□123.46□□□□7.2FormattedOutput-Printfdint;decimalnumberoint,unsignedoctalnumber(withoutaleading0)x,Xintunsignedhexadecimalnumberuintunsigneddecimalnumbercintsinglecharacterschar*;printcharactersfromthestringuntila‘\0’orthenumberofcharactersgivenbytheprecisionfdouble;[-]m.dddddd,wherethenumberofd’sisgivenbythepricision7.2FormattedOutput-Printfd带有符号的10进制整型数的输出o8进制无符号整型数的输出x,X16进制无符号整型数的输出u无符号的10进制整型数的输出c单个字符的输出s字符串的输出f以小数形式输出浮点数或双精度数据,含6位小数7.2FormattedOutput-PrintfBetweenthe%andtheconversion(附加格式说明)-specifiesleftadjustmentoftheconvertedargument.mspecifiedtheminimumfieldwidth..separatesthefieldwidthfromtheprecision..nspecifiesthemaximnumberofcharactertoprintedfromastringorthedigits.haintegertobeprintedasashort.l,Laintegertobeprintedasalong.7.2FormattedOutput-PrintfBetweenthe%andtheconversion(附加格式说明)-左对齐m最小输出宽度.分割输出宽度和有效位数..n最大小数位数或允许输出的字符串长度hShort类型数据的输出.l,L用于长整型数据的输出.7.2FormattedOutput-Printf7.4FormattedInput-Scanfintscanf(char*frm,arg1,arg2
...)eachofwhichmustbeapointer7.4FormattedInput-Scanfscanf(格式控制,地址列表);“格式控制”的含义同printf()函数,“地址列表”是由若干地址组成的列表,可以是变量的地址,或字符串的首地址。
Main()
{int
a,b,c;
scanf(“%d%d%d”,&a,&b,&c);
printf(“%d,%d,%d\n”,a,b,c);}(1)在进行数据输入时,“%d%d%d”数据与数据之间可以用一个空格或多个空格,回车键、跳格键tab来分隔。(2)若在“格式控制”中除了格式说明之外,还有其他字符,则数据与输入分隔应该输入相应字符:scanf(“%d,%d”,&a,&b);
int
day,year;charmonthname[20];scanf(“%d%s%d”,&day,monthname,&year);格式说明
和printf()函数中的格式说明相似,以%开始,以一个格式字符结束,中间可以插入附加字符。说明∶
①对unsigned型数据,可以用%u、%d、%o和%x格式输入。
②可以指定输入数据所占列数,系统自动截取所需数据。
Scanf(“%3c”,&ch);
Scanf(“%3d%3d”,&a,&b);③%后的“*”附加说明符,用来表示跳过它相应的数据。
Scanf(“%2d%*3d%2d”,&a,&b);
④输入数据时,不能规定精度。
例如:scanf(“%7.2f”,&a);是不合法的输入:abc
结果:’a’=>ch
输入:123456结果:123=>a456=>b输入:12□345□67
结果:12=>a67=>b7.4FormattedInput-Scanfscanf()函数的执行中应注意的问题
①scnaf()函数中的“格式控制”后面应当是变量地址,而不应是变量名。②如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。如:
Scanf(“%d:%d:%d”,&h,&m,&s);输入应该用以下形式:
12:23:11
③在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。Scanf(“%c%c%c”,&c1,&c2,&c3);a□b□c则’a’->c1,□->c2,’b’->c3,正确的方法是abc④在输入数据时,遇到以下几种情况时该数据认为结束∶遇到空格、或“回车”或TAB键;遇到宽度结束;Scanf(“%3d%3d”,&a,&b);
遇到非法输入。7.4FormattedInput-ScanfScanf(“%d%d”,&a,&b);123□456123->a,456->bScanf(“%d%c%f”,&a,&b,&c);1234h123.451234
->a,’h’
->b,123.45
->c7.5FileAccess
文件类型指针文件结构体FILE
缓冲文件系统为每个正使用的文件在内存开辟文件信息区文件信息用系统定义的名为FILE的结构体描述FILE定义在stdio.h中typedef
struct{int_fd;//文件号
int_cleft;//缓冲区中剩下的字符数
int_mode;//文件操作方式
char*_next;//文件当前读写位置
char*_buff;//文件缓冲区位置}FILE;FILEf[5];7.5FileAccess文件类型指针指针变量说明:FILE*fp;用法:文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件文件关闭后,它的文件结构体被释放文件名文件使用方式文件类型指针C程序操作系统磁盘Openafile:
FILE*fopen(char*name,char*mode);Filepointer:
FILE*fp;
/*pointtoastructurethatcontaintheinformationaboutthefile*/name:filename;mode:howtoaccesstheopenedfile;
fp=fopen(“c:\work\x.c”,“r”);7.5FileAccess
FILE*fp;char*filename=“c:\\fengyi\\bkc\\test.dat”
fp=fopen(filename,”r”);
例文件打开与测试
FILE*fp;
fp=fopen(“aa.c”,“w”);
if(fp==NULL){printf(“Fileopenerror!\n”);
exit(0);}“r”openafileforread;“w” openafileforwrite;“a” openafileforappend;“b”accessafileasbinaryfile;fp=fopen(“c:\work\x.c”,“w”);fp=fopen(“c:\work\x.c”,“a”);fp=fopen(“c:\work\x.c”,“wb”);7.5FileAccess
1Ifafilethatdoesnotexistforwora,itiscreateifpossible;如果文件不存在,“w”和“a”将创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黄牛人工冷配工作制度
- 第1章 汽车的动力性习题解答-
- 郑州市新密市2025-2026学年第二学期五年级语文第七单元测试卷(部编版含答案)
- 达川地区渠县2025-2026学年第二学期二年级语文期末考试卷部编版含答案
- 稳定土拌和设备操作工风险评估与管理能力考核试卷含答案
- 文物修复师常识知识考核试卷含答案
- 稀土色层工测试验证评优考核试卷含答案
- 船舶电讯工班组考核考核试卷含答案
- 继电器制造工持续改进评优考核试卷含答案
- 安阳市北关区2025-2026学年第二学期三年级语文第七单元测试卷(部编版含答案)
- 【MOOC】中医与辨证-暨南大学 中国大学慕课MOOC答案
- JJF 1049-2024温度传感器动态响应校准规范
- 起重机械安装维修程序文件及表格-符合TSG 07-2019特种设备质量保证管理体系
- 年产330万吨生铁(其中炼钢生铁78%,铸造生铁22%)的高炉炼铁车间工艺设计
- 110kV-GIS安装专项方案内容
- AQ-T 2081-2023 金属非金属矿山在用带式输送机安全检测检验规范
- 犹太复国主义
- 销售培训:利用故事营造销售情境
- 绿色建材评价 室内木门
- 漫画人物表情画法
- 贵州省情教程 第一章 特殊的地理环境
评论
0/150
提交评论