[IT认证]北大裘宗燕《从问题到程序》第八章 文件和输入输出.pptVIP

[IT认证]北大裘宗燕《从问题到程序》第八章 文件和输入输出.ppt

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[IT认证]北大裘宗燕《从问题到程序》第八章 文件和输入输出

第八章 文件与输入输出 c 字符,指定输入宽度可输入多字符到字符数组。不跳过空白,读入多字符后不加\0。 (char*) s 非空白字符序列,可有长度限制。在字符数组最后附加\0(做成字符串)。 (char*) e,f,g 符合C语言规定形式的浮点数。 (float*) p 指针值,形式与printf(%p)输出一致。用于把由printf输出的指针值读回。 (void*) n 向对应参数中写入本次函数调用执行到此已读的字符个数。不实际读入也不计转换项数。 (int*) [...] 与所列字符的最长序列匹配,写入数组并附\0。用[]...]表示匹配串可含]。 (char*) [^...] 与不含所列字符的最长序列匹配,写入数组并附\0。[^]...]表示不含]。 (char*) % 与输入流中的字符%匹配,不赋值。 转换字符d、i、o、u、x前面可以标明目标长度,h表示赋值目标为short;l表示赋值目标为long 转换字符e、f、g前加l表示目标是double,L表示是long double 加了这些字符,scanf将按指定类型构造和赋值 未做转换前出错或者遇到文件结束时返回EOF 其他情况下返回执行中完成转换的项数,返回0表示第一个转换失败 例:设scanf当时要处理转换描述串%ld: scanf读入并丢掉空白符号(可无),然后做匹配 若遇到的非空白字符不能看作数,则匹配失败 否则就逐个读入字符,直至遇到第一个非数字字符 将读入的正负号及数字字符序列做成一个长整数,赋给指定的变量 从这个转换描述串之后继续处理格式串 如果转换失败,引起失败的字符仍在流中,下次调用输入函数将先读到这个字符 写好输入需要考虑许多细节,较麻烦。 原因:输入描述与外部打交道的方式,应根据外部提供的信息决定工作方式。外部情况不受写程序的人控制。 写好处理输入的程序片段,需要考虑外部的各种可能,适当处理有关情况(难说“正确”,只能说“适当”) 外部输入不满足程序要求时,应提供一些“信息” 写输入时总要做一些假设,考虑一些问题。 书上有一些例子和说明 输出格式控制 以printf为例(其他格式化输出函数同) 原型: int printf(const char *fmt, ...); fmt里的非转换描述直接输出 根据转换描述顺序转换各实参,结果插入在fmt里相应位置,形成整个输出 出错时返回负值 正常完成返回实际输出的字符个数 转换描述从%开始到转换字符止,中间可有若干字符,顺序地可以有如下成分(都可缺): 1)标志字符:下面字符可以以任意顺序出现: - 转换结果在字段范围内左对齐 + 数值前面总输出正负号 空格 转换得到的首字符不是正负号时输出一个空格 0 若数值输出不能填满字段,前面全填0 # 指定另一种形式。对转换符o的数值前加0;x和X的非0结果前加0x或0X;e、E、f、g、G输出时总写小数点;g和G,不去掉最后的0。 2)一整数。最小宽度,转换结果至少占这么宽,可更宽。若得到的序列不够,在左边(或右边,有+时)填空格。数值在有0标志时在数字序列左边填0。 3)圆点及另一数。对字符串参数表示最大输出字符数;对e、E、f表示小数点后数位;对g、G表示有效数位;对整数表示最小输出数字个数,不够时左边添0。 4)目标长度字符h、l或L。h和l用于整参数,h指short或unsigned short;l指long或unsigned long。L指long double。 字段宽度/精度可写*,表示值由参数取得。提供值的参数必须是int。 转换字符,所要求参数类型和实际输出形式: d,i 带符号的十进制形式整数(int) o 无符号八进制表示的整数,无先导0(int) x,X 无符号十六进制整数,无先导0x或0X。用x时十以上数字用abcdef;对X用ABCDEF(int) u 无符号十进制整数(int) c 字符,转为unsigned char输出(int) s 字符序列,从参数所指位置直到字符\0,或者达到字段的指定宽度为止(char*) f 一般实数形式[-]mmm.ddd,小数点后位数由精度描述定,默认6。精度为0不输出小数点(double) e,E 科学记数法[-]m.dde±xx或[-]m.ddE±xx,小数点后位数由精度描述确定,默认6。精度为0时不输出小数点(double) g,G 灵活形式。指数小于-4或大于等于精度描述时用%e或%E形式输出,否则用%f形式输出。末尾的0或小数点不输出(double) p 指针,用具体实现确定的形式(void*) n 把本次函数执行到此已输出的字符数写进参数。处理这个“转换描述”进行不进行任何转换(in

文档评论(0)

ipbohn97 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档