C语音文件与输入输出-62.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 文件与输入输出 例:从键盘输入一些字符,逐个把它们送到磁盘文件里, 直到输入一个“#”为止。 fmt里各种字符的意义与作用: 空白字符(空格/制表符):要求scanf跳过输入中遇到的空白字符(空格、换行符、制表符) 普通字符:非转换描述的非空白字符。要求scanf将它与输入流下一个非空白字符匹配,字符相同时匹配成功,否则转换失败 转换描述:一个转换描述刻画对流中下一字段的转换方式。以字符%开始,到转换字符结束 转换描述:% 之后可有:*表示只匹配不赋值;长度描述(整数)指定输入字符个数;赋值目标长度指示h、l或L;最后是转换字符。 转换顺利完成时结果赋给参数所指变量(无*时)。若有长度描述就以指定个数的字符为字段。有星号(如%*s、%*6d等)时所匹配的东西不赋值,直接丢掉。 转换字符的意义,所要求实际输入,对应参数类型: d 十进制形式的整数。 (int*) i 整数,可为十、八或十六进制表示。 (int*) o 八进制整数,可无先导字符0。 (int*) u 无符号十进制整数。 (unsigned*) x 十六进制整数,可无先导0x或0X。 (int*) 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 doubl

文档评论(0)

书房 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档